Quando refazer a execução de executáveis ​​em $ PATH com bash?

9

O Bash shell possui um comando hash -rinterno para redefinir o $PATHcache interno dos executáveis.

Quando é necessário usar este comando?

Relacionado: Como refazer a execução de executáveis ​​em $ PATH com bash

kevinarpe
fonte
11
... por exemplo, quando você tem um programa que acaba de recompilados ... com o mesmo nome ... talvez em um caminho diferente ...
Hastur
@ Hastur: Não tenho certeza se o seu comentário é uma pergunta ou uma afirmação. Se declaração, pls postar como resposta.
Kevinarpe

Respostas:

7

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 .

Hastur
fonte
4

Se você executou anteriormente um programa nessa chamada de shell e instalou outra versão dele em um diretório anterior da sua $PATHlista 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 $PATHe 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 -rapós a modificação $PATH; ela é redefinida automaticamente quando isso é feito.

Barmar
fonte
Bom ponto sobre a parte da instalação e o ponto no seu caminho.
Kevinarpe