-
O nome do executável é importante. Se o arquivo tiver o nome
foo.sh
, a execução defoo
não funcionará, a menos que exista algum outro executável chamadofoo
. Ao contrário do Windows, o Unix não faz extensões de arquivos implícitas . -
Se o seguinte funciona:
./foo.sh
Mas isso não acontece:
foo.sh
Isso significa que o arquivo está em seu diretório atual e seu diretório atual não está em seu PATH. Para sua proteção, se você não fornecer explicitamente o caminho para um comando, o shell procurará apenas o comando entre os arquivos que estão em seu PATH.
-
Espaços são importantes. O seguinte pode funcionar:
./foo.sh
Mas isso (tirado da primeira versão desta pergunta) certamente não funcionará:
./ foo.sh
Com um espaço entre
./
efoo.sh
, o shell pensará que você deseja executar o diretório atual comfoo.sh
como argumento. Isso gerará uma mensagem de erro.