Когда я делаю
which pip3
я получил
/usr/local/bin/pip3
но когда я пытаюсь выполнить, pip3
я получаю ошибку следующим образом:
bash: /usr/bin/pip3: No such file or directory
Это потому, что я недавно удалил этот файл. Теперь which
команда указывает на другую версию, pip3
которая находится в, /usr/local/bin
но оболочка все еще помнит неправильный путь. Как мне заставить его забыть об этом пути?
which
Руководство говорит ,
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.
И то /usr/local/bin
и другое /usr/bin
находится в моей PATH
переменной, и /usr/local/bin/pip3
это не символическая ссылка, это исполняемый файл. Так почему же он не выполняется?
/usr/local/bin/pip3
?pip3
эту оболочку, пока она была внутри,/usr/bin
а затем перемещали ее?hash -t pip3
?hash -t pip3
печатает/usr/bin/pip3
type
иное, чемwhich
.type
встроен в оболочку posix и говорит вам, что будет делать оболочка, а не пытатьсяwhich
угадать, что будет делать оболочка.Ответы:
Когда вы запустите команду,
bash
она запомнит местоположение этого исполняемого файла, поэтому ей не придетсяPATH
каждый раз искать снова. Таким образом, если вы запустите исполняемый файл, а затем измените расположение,bash
все равно попытаетесь использовать старое расположение. Вы должны быть в состоянии подтвердить это с помощьюhash -t pip3
которого покажет старое местоположение.Если вы запустите
hash -d pip3
его, он скажет bash забыть старое местоположение и должен найти новое при следующей попытке.источник
hash -r
очистить всю таблицу.which
.help
вместо man, поэтому здесьhelp hash
type hash
скажет вам, что это встроенная оболочка, поэтому у нее нет собственной страницы руководства . Вместо этого используйтеhelp hash
или посмотритеhash
на справочной странице Bash.man
... такhash
какbash
встроенный, вы хотелиman bash
бы найти его. Но то, что говорит страница руководства, по сути, то, чтоhelp hash
говорит Баш.