web-dev-qa-db-ja.com

Bashが移動/削除された実行可能ファイルへの間違ったパスを記憶する

私がする時

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はシンボリックリンクではなく、実行可能ファイルです。では、なぜ実行されないのでしょうか?

31
spiderface

bashでコマンドを実行すると、その実行可能ファイルの場所が記憶されるため、毎回PATHを検索する必要がありません。したがって、実行可能ファイルを実行して場所を変更しても、bashは引き続き古い場所を使用しようとします。古い場所を示すhash -t pip3でこれを確認できるはずです。

hash -d pip3を実行すると、bashに古い場所を忘れるように指示し、次に試すときに新しい場所を見つける必要があります。

40
Eric Renouf