Todos os shells atravessam os diretórios no $PATH
em ordem e executam o primeiro comando que encontrarem. Por exemplo, se seu caminho for /usr/local/bin:/usr/bin:/bin
, o comando de /usr/local/bin
será executado se houver um; se não houver, o comando de /usr/bin
será executado e assim por diante. Não importa em qual ordem os comandos foram instalados.
Há uma exceção: se você instalar um programa enquanto o shell já estiver em execução, o shell pode ter mantido o local do programa em um cache, caso em que ele continuará executando o programa antigo. Por exemplo, se você iniciar o tcsh, execute foo
, que é nesse ponto /usr/bin/foo
, depois instale outra versão do programa em /usr/local/bin/foo
e chame foo
desse shell novamente, ele ainda executará% código%. Um shell recém-iniciado pegará /usr/bin/foo
. Execute o comando /usr/local/bin/foo
para esvaziar o cache de locais de comando do tcsh. No bash e zsh, o comando equivalente é rehash
(zsh também entende hash -r
).