Quand je fais
which pip3
Je reçois
/usr/local/bin/pip3
mais lorsque j'essaie d'exécuter, pip3
j'obtiens une erreur comme suit:
bash: /usr/bin/pip3: No such file or directory
C'est parce que j'ai récemment supprimé ce fichier. Maintenant, la which
commande pointe vers une autre version de pip3
celle-ci, /usr/local/bin
mais le shell se souvient toujours du mauvais chemin. Comment puis-je lui faire oublier ce chemin?
Le which
manuel dit
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.
Les deux /usr/local/bin
et /usr/bin
sont dans ma PATH
variable, et ce /usr/local/bin/pip3
n'est pas un lien symbolique, c'est un exécutable. Alors pourquoi ne s'exécute-t-il pas?
/usr/local/bin/pip3
?pip3
dans cet obus alors qu'il était dedans/usr/bin
et l' aviez ensuite déplacé?hash -t pip3
?hash -t pip3
imprime/usr/bin/pip3
type
cuirwhich
.type
est intégré dans un shell posix et vous indique ce que fera un shell, plutôt que celuiwhich
qui essaie de deviner ce que fera le shell.Réponses:
Lorsque vous exécutez une commande,
bash
elle se souviendra de l'emplacement de cet exécutable, de sorte qu'il n'a pas besoin de la rechercherPATH
à chaque fois. Donc, si vous exécutez l'exécutable, puis changez l'emplacement,bash
essayez toujours d'utiliser l'ancien emplacement. Vous devriez être en mesure de confirmer cela avechash -t pip3
qui montrera l'ancien emplacement.Si vous l'exécutez,
hash -d pip3
il dira à bash d'oublier l'ancien emplacement et devrait en trouver un nouveau la prochaine fois que vous essayerez.la source
hash -r
pour effacer toute la table.which
.help
qu'à la place de man, alors voicihelp hash
type hash
vous dira que c'est un shell intégré, donc il n'a pas sa propre page de manuel. Utilisez plutôthelp hash
ou recherchezhash
dans la page de manuel de bash.man
... commehash
c'est unbash
builtin, vous voudrezman bash
le trouver. Mais ce que dit la page de manuel, c'est essentiellement ce quehelp hash
bash dit.