シェルは毎回PATHのすべてのディレクトリを閲覧しますか? [コピー]

シェルは毎回PATHのすべてのディレクトリを閲覧しますか? [コピー]

シェルがPATH環境変数に記載されているディレクトリに実行可能ファイルが見つからない場合。その後の呼び出しをすばやく実行するために、この情報をどこかに保存しますか、またはすべてのディレクトリを再検索しますか?

答え1

多くのシェルは実行するコマンドの履歴を保持します。持つ既知のコマンドを呼び出すときにすべての項目をナビゲートPATHする必要がないようにします。PATHあなたはこれを見ることができます例えばBashまたはZshで実行されます。

hash

注文する。

一部のシェル(例:Tcsh)はただ次のコマンド履歴を検討してください。デフォルトでは、Tcshは起動時とパスが更新されたときにパスを検索し、パスを再表示しません(特にコマンドが見つからない場合)。これはsettingsを使用して変更できます。autorehashコマンドrehashを実行するとパスが再検索されます。

しかし、私が知っている限り、どのシェルも次のコマンドを覚えていません。いいえ発見されました。これにより、不足しているコマンドが見つかったときにパスを検索するシェルで、不足しているコマンドをディレクトリに直接追加するか、そのディレクトリを変数に追加して次回の呼び出しでPATHPATHの操作なしで見つけることができます。シェルにScanコマンドを再度伝える必要があります。

さらに多くの場合、すでに存在するコマンドの新しいバージョンを追加するには、PATH不足しているコマンドを追加するよりも手動の介入が必要です。この場合、シェルがすでに存在するバージョンを簡単に覚えることができるからですPATH。または、新しいバージョンを使用する場合の目標は次のとおりです。事前に決定されますhash -rhash -d

関連情報