
Escrevi um script simples com a extensão .sh
em 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.sh
na 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 PATH
variável de ambiente.
Depois de fazer isso, você poderá digitar yourscript.sh
e, não importa em qual diretório você esteja, o shell encontrará seu script e o executará.
É assim que geralmente é feito:
- Crie um
bin
diretório em seu diretório inicial emv
seus scripts nele. - Mude todos os scripts para executáveis (
chmod +x
). - Certifique-se de que sua
PATH
variável de ambiente contenha seu$HOME/bin
diretório. Em alguns sistemas, o padrão~/.profile
adicionará seu$HOME/bin
diretório automaticamentePATH
, portanto, verifique-o~/.profile
antes 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 bin
diretório em seu PATH
, é uma boa ideia sair e fazer login novamente, mudar para outro diretório e executar type yourscript.sh
novamente para garantir que tudo esteja configurado corretamente.