Kiedy robię
which pip3
dostaję
/usr/local/bin/pip3
ale gdy próbuję wykonać pip3
, pojawia się następujący błąd:
bash: /usr/bin/pip3: No such file or directory
To dlatego, że niedawno usunąłem ten plik. Teraz which
polecenie wskazuje, że inna wersja tego pip3
pliku znajduje się w, /usr/local/bin
ale powłoka nadal pamięta złą ścieżkę. Jak mogę zapomnieć o tej ścieżce?
which
Instrukcja mówi
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.
Zarówno /usr/local/bin
i /usr/bin
są w moim PATH
zmiennej, a /usr/local/bin/pip3
nie jest dowiązaniem symbolicznym, to plik wykonywalny. Dlaczego więc się nie wykonuje?
/usr/local/bin/pip3
?pip3
w tej powłoce, gdy była w/usr/bin
środku, a następnie ją przenosiłeś?hash -t pip3
?hash -t pip3
drukuje/usr/bin/pip3
type
eather niżwhich
.type
jest wbudowany w powłokę posix i mówi ci, co zrobi powłoka, a niewhich
który próbuje zgadnąć, co zrobi powłoka.Odpowiedzi:
Kiedy uruchomisz polecenie
bash
, zapamięta lokalizację tego pliku wykonywalnego, więc nie będzie musiał zaPATH
każdym razem szukać ponownie. Więc jeśli uruchomisz plik wykonywalny, a następnie zmień lokalizację,bash
nadal spróbujesz użyć starej lokalizacji. Powinieneś być w stanie to potwierdzić, za pomocąhash -t pip3
którego wyświetli się stara lokalizacja.Jeśli uruchomisz
hash -d pip3
, powiesz bashowi, aby zapomniał o starej lokalizacji i powinien znaleźć nową przy następnej próbie.źródło
hash -r
wyczyścić cały stół.which
.help
zamiast człowieka, więc tutajhelp hash
type hash
powie ci, że jest to wbudowana powłoka, więc nie ma własnej strony podręcznika . Zamiast tego użyjhelp hash
lub wyszukajhash
na stronie podręcznika bash.man
... ponieważhash
jest tobash
wbudowany, powinieneśman bash
go znaleźć. Ale to, co mówi strona podręcznika, to w zasadzie to, cohelp hash
mówi bash.