como executar um script de shell de qualquer diretório

3

Eu escrevi um script simples com a extensão .sh em meu diretório inicial que posso executar no meu diretório pessoal, mas quero executar o script de todos os diretórios em que estou. O que devo fazer?

    
por fzm 31.10.2015 / 18:08

1 resposta

3

Interativamente, você sempre pode executar seus scripts digitando ~/yourscript.sh na linha de comando, mas isso é muito limitante, especialmente se você quiser escrever mais scripts que chamam os scripts que você já escreveu.

Uma abordagem mais integrada e flexível envolve colocar todos os seus scripts em um diretório e adicionar esse diretório à sua variável de ambiente PATH .

Depois de fazer isso, você poderá digitar yourscript.sh , e não importa em qual diretório você esteja, o shell irá encontrar seu script e executá-lo.

É assim que geralmente é feito:

  1. Crie um diretório bin em seu diretório pessoal e mv seus scripts nele.
  2. Altere todos os scripts para executáveis ( chmod +x ).
  3. Verifique se a variável de ambiente PATH contém o diretório $HOME/bin . Em alguns sistemas, o ~/.profile padrão adicionará seu diretório $HOME/bin ao PATH automaticamente, portanto, verifique seu ~/.profile antes de modificá-lo.

Deixe-me ilustrar com algum script:

mkdir ~/bin
mv ~/*.sh ~/bin
chmod +x ~/bin/*
if ! grep 'PATH=.*HOME/bin' ~/.profile
then
    echo 'export PATH="$HOME/bin:$PATH"' >> ~/.profile
fi
. ~/.profile
echo "$PATH"      # you should see your bin directory
cd /tmp           # change to another random directory
type myscript.sh  # see if the shell finds your scripts

Se você vir seu diretório bin no seu PATH , é uma boa ideia sair, fazer login novamente e mudar para outro diretório e executar type yourscript.sh novamente para garantir que tudo esteja configurado corretamente.

    
por 31.10.2015 / 18:52