O Bash se lembra do caminho errado para um executável que foi movido / excluído

23

Quando faço

which pip3

Eu obtenho

/usr/local/bin/pip3

mas quando tento executar pip3 , recebo um erro da seguinte forma:

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

Isso porque recentemente excluí esse arquivo. Agora o comando which aponta para outra versão de pip3 que está localizada em /usr/local/bin , mas o shell ainda se lembra do caminho errado. Como faço para esquecer esse caminho?

O manual which diz

which returns the pathnames of the files (or links) which would be executed in the current environment, had its arguments been given as commands in
       a strictly POSIX-conformant shell.  It does this by searching the PATH for executable files matching the names of the arguments. It does not follow
       symbolic links.

Tanto /usr/local/bin como /usr/bin estão na minha variável PATH , e /usr/local/bin/pip3 não é um link simbólico, é um executável. Então, por que não executa?

    
por spiderface 08.01.2017 / 17:01

1 resposta

30

Quando você executar um comando em bash , ele se lembrará da localização desse executável, para que não precise pesquisar o PATH novamente a cada vez. Portanto, se você executar o executável e, em seguida, alterar o local, bash ainda tentará usar o local antigo. Você deve confirmar isso com hash -t pip3 , que mostrará o local antigo.

Se você executar hash -d pip3 , ele avisará o local antigo e deverá encontrar o novo na próxima vez que você tentar.

    
por 08.01.2017 / 17:25

Tags