Você pode executar um script especificando um caminho (relativo ou absoluto) para o script ou garantindo que o diretório que contém o script esteja na pesquisa do seu shell $PATH
.
Ignorando temporariamente o fato de que test
não é um bom nome para este exemplo, como existem outros test
s seu shell pode escolher executar, você sempre pode executar o script pelo nome test
se o diretório contendo está no seu $PATH
. Isto é o que você fez com export PATH=$PATH:/home/Bill/scripts
. No terminal em que você definiu este $PATH
, você pode executar test
, independentemente do seu diretório de trabalho atual.
Se o script não for no seu $PATH
, ou você quiser especificar explicitamente qual test
você quer executar, você pode fornecer não apenas o nome do arquivo , mas um caminho relativo ou absoluto para o arquivo. Então, novamente, independentemente do seu diretório de trabalho atual, você sempre pode executar o script fornecendo o caminho completo: /home/Bill/scripts/test
.
Você também pode executar o script fornecendo um caminho relativo; para alguns exemplos, em que o prompt indica seu diretório de trabalho:
/home/Bill/scripts$ ./test
/home/Bill$ scripts/test
/home/Bill/documents$ ../scripts/test
/home/James/documents$ ../../Bill/scripts/test
O motivo pelo qual você recebeu um erro quando tentou executar
/home/Bill$ ./test
é porque não há arquivo /home/Bill/test
, que é o que você está tentando executar ("o arquivo test
no diretório atual .
")
Se você quiser que todos os usuários possam executar o script simplesmente com seu nome, sem fornecer um caminho absoluto ou relativo para o script, ele deve estar em $PATH
de todos. Você pode fazer isso fazendo com que todos os usuários adicionem /home/Bill/scripts
a seus $PATH
ou colocando o script em um local que esteja no padrão $PATH
para todos os usuários, como /usr/local/bin
. Mas você terá que chamar seu script de algo diferente de test
, porque test
é um caso especial: é um comando interno do shell.