Embora isso tenha sido bem respondido por alguns outros, gostaria de acrescentar alguns pensamentos:
1) PATH é consultado apenas se o executável invocado não tiver elementos de caminho. algum comando seria procurado em $ PATH, ./somecommand
ou /usr/bin/somecommand
, ou ../../bin/somecommand
apenas use regras de diretório, não PATH
Se houver vários arquivos executáveis no PATH com o mesmo nome, qual é o preferido?
Ele para no primeiro local encontrado, lendo $ PATH da esquerda para a direita.
O diretório atual está incluído na pesquisa quando o arquivo é executado?
Se o diretório atual estiver em PATH, ele será pesquisado. Lembre-se de que um diretório vazio no PATH inclui o diretório atual. por exemplo, PATH =: / usr / bin (vazio à esquerda) PATH = / usr / bin: (à direita vazio) e PATH = / usr / bin :: / bin (vazio no meio) incluirão efetivamente o diretório de trabalho atual.
Suponha que exista um arquivo com o nome executable.sh em um diretório atual. Isso funcionaria se for executado $ execute e. não faz parte do PATH?
Nunca o encontraria pesquisando PATH. Se o diretório atual não estiver no PATH, ele não será encontrado por uma pesquisa PATH.
Dito isto (e lamento acrescentar confusão) se houvesse um alias ou função que executasse o comando, ele seria executado. Ou, se o seu shell tiver um cache de localização e o executável estiver no cache, ele poderá ser encontrado. Portanto, nunca o encontrará no PATH, mas pode ser executado por outros meios.
which <executable>
comando de menção será útil neste segmento.