como executar um script shell de qualquer diretório

como executar um script shell de qualquer diretório

Escrevi um script simples com a extensão .shem meu diretório inicial que posso executar diretamente em meu diretório inicial, mas quero executar o script em todos os diretórios em que estou. O que devo fazer?

Responder1

Interativamente, você sempre pode executar seus scripts digitando ~/yourscript.shna linha de comando, mas isso é muito limitante, especialmente se você quiser escrever mais scripts que chamem 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 PATHvariável de ambiente.

Depois de fazer isso, você poderá digitar yourscript.she, não importa em qual diretório você esteja, o shell encontrará seu script e o executará.

É assim que geralmente é feito:

  1. Crie um bindiretório em seu diretório inicial e mvseus scripts nele.
  2. Mude todos os scripts para executáveis ​​( chmod +x).
  3. Certifique-se de que sua PATHvariável de ambiente contenha seu $HOME/bindiretório. Em alguns sistemas, o padrão ~/.profileadicionará seu $HOME/bindiretório automaticamente PATH, portanto, verifique-o ~/.profileantes de modificar.

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 bindiretório em seu PATH, é uma boa ideia sair e fazer login novamente, mudar para outro diretório e executar type yourscript.shnovamente para garantir que tudo esteja configurado corretamente.

informação relacionada