システムがファイルを検索するパスを決定するものは何ですか?

システムがファイルを検索するパスを決定するものは何ですか?

私は取得しようとしていますネプ動作しません。その過程で、2 つのバージョンがインストールされているようです。破損したバージョンは ~/bin にインストールされ、もう 1 つはコンパイルして実行してmake installに配置したものです/usr/local/bin/npm

そこで、~/bin フォルダ全体を ~/old/bin に移動しました...しかし、npmシステムを実行すると、まだ ~/bin で検索が行われます:

$ which npm
/usr/local/bin/npm
$ alias npm
-bash: alias: npm: not found
$ npm
-bash: /home/ubuntu/bin/npm: No such file or directory
$ echo $PATH
/home/ubuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
$

Ubuntu が npm を探す原因は何ですか~/bin/npm? 私は Ubuntu 11.10 を使用しています。この質問が Ubuntu 固有のものかどうかはわかりませんが、必要に応じて askubuntu に移動できます。

PATH に ~/bin があるのはわかりますが、私が理解している限りでは、これは npm が ~/bin に存在していればそれが使用されるということだけを意味します...しかし、なぜ bash は特にそこでそれを探すことにこだわるのでしょうか?コマンドがそれを見つける/usr/local/bin/npmのに、なぜ見つからないのでしょうかwhich?

答え1

実行可能ファイルの以前の既知の場所は、シェルによってハッシュされている可能性があります。シェルのキャッシュをリセットすると、hash -r問題は解決するはずです。

キャッシュ全体をリセットしたくない場合は、npmを使用するための個々のエントリを削除できますhash -d npm

関連情報