Como executar um script do terminal [duplicado]

1

Oi eu gostaria de executar um script do terminal, existe alguma maneira de fazer isso? Por exemplo: se eu tenho um script python, eu normalmente o executaria com este comando:

python script.py

Como posso executar este script apenas digitando o nome do arquivo do script no terminal (mesmo se eu estiver em outro diretório)?

Outra resposta que achei bastante útil: Como executar scripts sem digitar o texto completo caminho?

Você pode criar um link simbólico. Crie-o em / usr / local / bin. Tudo que você precisa é executar o comando:

sudo ln -s /full/path/to/your/file /usr/local/bin/name_of_new_command

Depois disso, você deve tornar seu arquivo executável:

chmod +x /full/path/to/your/file

Agora você poderá executar name_of_new_command a qualquer momento em seu terminal.

Note que esta é uma boa solução apenas para uso doméstico do Linux.

    
por giga 05.02.2016 / 01:45

2 respostas

3

Talvez a maneira mais fácil de fazer isso seja colocar seu script em $HOME/bin e garantir que as permissões estejam definidas como executáveis:

chmod +x  $HOME/bin/script.py

Agora você deve conseguir executar o script em qualquer diretório ....

Alguns outros pontos a ter em conta:

  1. Certifique-se de que $HOME/bin esteja no seu $PATH , para o Ubuntu isso será definido por padrão em $HOME/.profile , mas não faz mal verificar.
  2. Certifique-se de que seu script Python tenha o conjunto "shebang" apropriado:

    #!/usr/bin/env python
    
por andrew.46 05.02.2016 / 02:22
3

Coloque esta linha no seu .bashrc supondo que você esteja usando o bash como shell:

export PATH=/path/to/your/script/:"$PATH"

Você pode usar o vi, nano ou gedit para editar essa linha no final do arquivo. Certifique-se de que seu script esteja configurado para o modo executável, se for um script bash:

chmod +x script.sh 

Ou se for um script Python:

chmod +x script.py

No seu script, indique o tipo deles na primeira linha. Se é o Python:

#!/bin/python 

Se é bash:

#!/bin/bash
    
por David Borges 05.02.2016 / 03:05