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.