システムがファイルを検索するパスはどのように決定されますか?

システムがファイルを検索するパスはどのように決定されますか?

欲しい新しいプロジェクト管理働くその過程で2つのバージョンをインストールしたようです。 1 つは ~/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

おすすめ記事