シェルセッションにログインすると、更新されないパスに実行可能ファイルキャッシュが生成されますか? [コピー]

シェルセッションにログインすると、更新されないパスに実行可能ファイルキャッシュが生成されますか? [コピー]

/usr/bin/usr/bin/emacsたとえば、に格納されているパッケージのカスタムバージョンをコンパイルするwhich emacsとき/usr/bin/emacs/usr/local/bin/emacs/usr/local/binPATH

新しいバイナリを表示するscreen前に、サインインしてログアウトするか、新しいフレームを開く必要があります。which emacs

これは一部のキャッシュが原因であるか、または再ログインする前に既存のパスを参照できるようにするいくつかのセキュリティ機能がありますか?

編集する:

この質問が重複したり、次のような他の質問で回答されたと思う人のために -Bashの実行可能ファイルパスキャッシュを消去する方法は?ハッシュコマンドの目的は何ですか?、この質問は主にシステムのデフォルトシェルであるにもかかわらず、a shell、not about、bashまたはhash組み込みコマンドbash(私が知らない)について具体的に尋ねます。

zsh私が使ったような他のケースもありfishkshまもなくリリースされるような新しいケースもたくさんありますeshellkshoilshell

だから私はこの質問が特定のシェルではなく独立した一般的なシェルに関連しているべきだと思います。

そうする理由がある場合、経験によると、これが賢明な選択であるか、他の回答で詳しく説明するよりも、経済やパフォーマンスに関連しています。

この編集内容をレビューで書いたかったのですが、長さが限られています。

答え1

はい、bashや他のシェルは、コマンドを見つけるためにPATH変数のすべてを試みる「ハッシュ」コマンドテーブルを保持しているため、毎回確認する必要はありません。あなたのように環境を変更する人は、このコマンドがhash -d NAME役に立ちますhash -r。これはbashコマンドであり、他のシェルは異なる動作をする可能性があります。

だから、

hash -d emacs

bashにemacsパスを忘れるように依頼します。

hash -r

忘れてもらいますみんな道。私は後者を使用する傾向があります。

関連情報