Quando refazer executáveis em $ PATH com bash?

9

O shell Bash tem um comando interno hash -r para redefinir o cache $PATH interno para executáveis.

Quando é necessário usar este comando?

Relacionados: Como refazer os executáveis em $ PATH com bash

    
por kevinarpe 12.11.2015 / 08:32

2 respostas

7

hash is a bash built-in command. The hash table is a feature of bash that prevents it from having to search $PATH every time you type a command by caching the results in memory.

Assim, 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 .

    
por 12.11.2015 / 09:14
3

Se você executou anteriormente um programa nessa chamada de shell e instalou outra versão dele em um diretório anterior na lista de pesquisa $PATH , é necessário redefinir o hash para encontrá-lo no novo local . Caso contrário, usará o cache para encontrar o programa no local antigo.

Você também precisa redefinir o hash se um programa estiver instalado em dois diretórios no seu $PATH e remover a cópia do local anterior depois de executá-la. Caso contrário, ele tentará encontrá-lo naquele local e informar "Nenhum arquivo ou diretório" (pessoalmente, acho que ele deve limpar automaticamente o hash e fazer uma pesquisa completa quando isso acontecer, mas isso não aconteceu quando tentei ).

Note que você não precisa redefinir o hash inteiro, você pode usar:

hash name

para forçá-lo a atualizar a entrada do cache apenas para esse nome ou:

hash -d name

para excluir apenas essa entrada de cache. Estas deixam todas as outras entradas de cache sozinhas.

Você não precisa usar hash -r depois de modificar $PATH , ele é redefinido automaticamente quando isso é feito.

    
por 13.11.2015 / 22:14

Tags