Embora isso tenha sido bem respondido por alguns outros, gostaria de acrescentar alguns pensamentos:
1) O PATH só é consultado se o executável invocado não tiver elementos de caminho. somecommand seria procurado em $ PATH, ./somecommand
ou /usr/bin/somecommand
, ou ../../bin/somecommand
apenas usam regras de diretórios, não PATH
If there are multiple executable files in PATH with the same name which one is preferred?
Ele pára no primeiro que encontrar, lendo $ PATH da esquerda para a direita.
Is current directory included in the search when file is executed?
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 (levando vazio) PATH = / usr / bin: (vazio) e PATH = / usr / bin :: / bin (meio vazio) todos efetivamente incluirão o diretório de trabalho atual.
Suppose there is a file with name executable.sh in a current directory. Would that work if it is executed $ executed and . is not part of the PATH?
Nunca iria encontrá-lo pesquisando o PATH. Se a pasta atual não estiver no PATH, ela não será encontrada por uma pesquisa PATH.
Dito isto (e desculpe adicionar 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á encontrá-lo. Então, ele irá nunca encontrá-lo no PATH, mas pode ser executado por outros meios.