O Bash shell possui um comando hash -r
interno para redefinir o $PATH
cache interno dos executáveis.
Quando é necessário usar este comando?
Relacionado: Como refazer a execução de executáveis em $ PATH com bash
O Bash shell possui um comando hash -r
interno para redefinir o $PATH
cache interno dos executáveis.
Quando é necessário usar este comando?
Relacionado: Como refazer a execução de executáveis em $ PATH com bash
Respostas:
hash
é um comando interno do bash. A tabela de hash é um recurso do bash que impede que seja necessário pesquisar $ PATH toda vez que você digita um comando armazenando em cache os resultados na memória.
Portanto, quando as informações armazenadas em cache / armazenadas não forem mais atualizadas ou válidas, talvez seja necessário redefini-las.
Leia mais sobre esta bela resposta no Unix stackexchange .
Se você executou anteriormente um programa nessa chamada de shell e instalou outra versão dele em um diretório anterior da sua $PATH
lista de pesquisa, precisará redefinir o hash para que ele o encontre no novo local. Caso contrário, ele usará o cache para encontrar o programa no local antigo.
Você também precisará redefinir o hash se um programa estiver instalado em 2 diretórios no seu $PATH
e remover a cópia do local anterior após executá-lo. Caso contrário, ele tentará encontrá-lo nesse local e informará "Esse arquivo ou diretório não existe" (pessoalmente, acho que ele deve limpar automaticamente o hash e fazer uma pesquisa completa quando isso acontecer, mas não aconteceu quando tentei )
Observe que você realmente não precisa redefinir todo o hash, você pode usar:
hash name
para forçá-lo a atualizar a entrada de cache para esse nome ou:
hash -d name
para excluir apenas essa entrada de cache. Isso deixa todas as outras entradas de cache em paz.
Você não precisa usar hash -r
após a modificação $PATH
; ela é redefinida automaticamente quando isso é feito.