私がするとき
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
シンボリックリンクではなく実行可能ファイルです。それでは実行してみてはいかがでしょうか?
答え1
ここでコマンドを実行すると実行可能ファイルの場所が記憶されるため、毎回再検索するbash
必要はありません。PATH
したがって、実行可能ファイルを実行してから場所を変更すると、以前のbash
場所が引き続き試行されます。これを確認できる必要があり、前の場所がhash -t pip3
表示されます。
これを実行すると、hash -d pip3
bashは古い場所を忘れ、次回の試行時に新しい場所を見つけるように指示します。
答え2
実行可能ファイルの場所を変更する場合(移動または別の場所に実行可能ファイルの新しいバージョンを提供することによって)、hash -d NAME
強制bashを使用してPATHで再検索します。ただし、NAMEがキャッシュにない場合はエラーが発生するため、スクリプトの一部として次のように使用してください。
if hash -t $NAME >& /dev/null; then
hash -d $NAME
fi