O Bash não consegue encontrar o arquivo depois de movê-lo

3

Depois de mover um arquivo executável que executei recentemente (ou mais comumente, depois de desinstalar algo de algum lugar e instalar outra versão em outro lugar), o bash não consegue encontrá-lo, mesmo que ainda esteja no PATH.

Exemplo:

find
sudo mv /usr/bin/find /usr/local/bin
find

Resultados em:

bash: /usr/bin/find: No such file or directory

Isso é realmente chato porque aconteceu comigo dezenas de vezes. Como posso impedir que isso aconteça?

    
por Robin Green 27.05.2012 / 13:34

3 respostas

1

Para corrigir o problema permanentemente sem desabilitar totalmente o hash, coloque isso no seu bashrc:

shopt -s checkhash

Veja minha outra resposta sobre como resolver o problema imediato.

    
por 27.05.2012 / 13:52
6

Para eliminar o problema imediato:

hash -r

Para impedir que isso aconteça novamente:

set +h

para desabilitar o hashing (ou seja, armazenamento em cache na memória).

Isso pode ser colocado em um arquivo de inicialização do bash como /etc/bashrc .

A desvantagem desta solução é que ela diminui um pouco a velocidade se você tiver sistemas de arquivos de rede lentos montados e no PATH.

Realmente, na minha opinião, esse é um antigo bug bash que deveria ter sido corrigido anos atrás, e isso é apenas uma solução alternativa.

    
por 27.05.2012 / 13:37
3

Isso pode acontecer se a nova cópia não for executável, portanto, observe suas permissões e verifique se elas estão corretas.

    
por 27.05.2012 / 18:30

Tags