Como fazer comandos bash personalizados? (executando arquivos python, perl, ruby)

Como fazer comandos bash personalizados? (executando arquivos python, perl, ruby)

Eu gostaria de usar certas ferramentas executadas em Python/Perl/Ruby. Por exemplo, myProgram.pyé armazenado em ~/folder1/folder2/. Eu gostaria de executá-lo com entradas do bash como >>> myProgram -h.

Até agora, li sobre duas maneiras de fazer algo semelhante:

  1. Crie arquivos em um diretório bin:
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
  1. Edite ~/.bashrcpara um alias permanente:
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'

Infelizmente, a primeira maneira parece não funcionar com arquivos não-bash (até onde tentei), e a segunda opção apenas retorna um erro como myProgram: command not found.

Como devo fazer comandos bash para acesso rápido às minhas ferramentas Python/Perl/Ruby com entrada com os comandos?

Responder1

Para executar seus scripts assim, você precisa de três coisas:

  1. O script deve estar no diretório listado em sua $PATHvariável. Se você colocar scripts para ~/binexecutá-los sem especificar o caminho completo para o arquivo sempre que fizer login, será necessário estender o caminho .bashrcadicionando a seguinte linha export PATH=$PATH:~/bin. Para ver quais diretórios já estão no seu caminho, basta imprimi-lo echo $PATH. Para fazer qualquer alteração no .bashrcarquivo, você precisa fazer login novamente (ou executar novamente o bash).
  2. O script deve ter permissão de bit executável definida. Para fazer isso execute o comandochmod +x /path/to/script
  3. O script deve informar qual interpretador usar para executá-lo. Para isso é usada uma primeira linha especial no script chamada shebang: #!/path/to/interpreter. Para Python, isso será #!/usr/bin/python. Como sistemas operacionais diferentes podem ter binários em locais diferentes, é recomendado usar o shebang no formato #!/usr/bin/env pythonque executará o interpretador Python padrão, não importa onde ele esteja.

ATUALIZAÇÃO: Com base nos comentários, estou atualizando esta resposta com links simbólicos. Se você deseja apenas tornar mais fácil o acesso às ferramentas já instaladas, não é necessário criar scripts. Você só precisa encontrar o executável dessa ferramenta (ou se for um script, torná-lo executável se ainda não for) e então colocar o link simbólico (veja man ln) para ele no diretório em seu $PATH (ou adicionar o diretório com o executável em seu $ CAMINHO).

NOTA: Apenas tornar o script executável (veja 2.) e adicionar aliasao seu .bashrctestamento também funciona, mas é bastante inconveniente adicionar um novo alias toda vez que você cria um novo script.

informação relacionada