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 ).