$ touch file
$ ls
file
$ hash
hits command
1 /usr/bin/touch
1 /bin/ls
$ hash -p /hello/world/ls ls
$ ls
bash: /hello/world/ls: No such file or directory
hash -p somepath somecommand
define o caminho com hash para somecommand
para o caminho fornecido somepath
in bash
.
Isso geralmente não o ajudará a reverter a ordem de pesquisa PATH
entre dois diretórios, já que você teria que usar hash -p
em todos os binários que ocorrem nos dois diretórios. Se você tiver apenas um desses binários, pode ser uma opção viável.
Uma solução mais portátil seria simplesmente preceder o valor de PATH
com o segundo diretório.
Se o seu original PATH
for
/path/1:/path/2:...
primeiro você o transforma em
/path/2:/path/1:/path/2:...
use hash -r
para redefinir os caminhos com hash e use os binários como de costume. Agora, eles serão retirados de /path/2
em vez de /path/1
.
Se você salvar o PATH
original em uma variável temporária, será fácil restaurá-lo.
Resumo:
oldpath=$PATH
PATH=/path/2:$PATH
hash -r
# do stuff
PATH=$oldpath
hash -r