$ PATHの実行可能ファイルをbashで再ハッシュするのはいつですか?


9

Bashシェルには、実行可能ファイルのhash -r内部$PATHキャッシュをリセットする組み込みコマンドがあります。

このコマンドを使用する必要があるのはいつですか?

関連:bashを使用して$ PATHの実行可能ファイルを再ハッシュする方法


1
...たとえば、再コンパイルしたばかりのプログラムがある場合...同じ名前で...別のパスにある可能性があります...
Hastur

@Hastur:コメントが質問なのかステートメントなのかはわかりません。if文の場合、plsは回答として投稿します。
kevinarpe 2015年

回答:


7

hashbash組み込みコマンドです。ハッシュテーブルはbashの機能であり、結果をメモリにキャッシュすることにより、コマンドを入力するたびに$ PATHを検索する必要がなくなります。

そのため、キャッシュ/格納された情報が更新または有効でなくなった場合は、リセットする必要があります。

Unixのstackexchangeに関するこのすばらしい回答の詳細を読んでください。


4

以前にそのシェル呼び出しでプログラムを実行していて、それから別のバージョンのプログラムを$PATH検索リストの以前のディレクトリにインストールしたことがある場合は、ハッシュをリセットして新しい場所で見つけられるようにする必要があります。それ以外の場合は、キャッシュを使用して古い場所でプログラムを検索します。

プログラムがの2つのディレクトリにインストールされて$PATHおり、実行後に以前の場所からコピーを削除した場合も、ハッシュをリセットする必要があります。そうでなければ、それはその場所でそれを見つけようとし、「そのようなファイルまたはディレクトリはありません」と報告します(個人的には、ハッシュが自動的にクリアされて完全な検索が行われるべきだと思いますが、試みたときは起こりませんでした。 )。

実際にはハッシュ全体をリセットする必要はないことに注意してください。次を使用できます:

hash name

その名前だけのキャッシュエントリを強制的に更新するには、または:

hash -d name

そのキャッシュエントリのみを削除します。これらは、他のすべてのキャッシュエントリをそのままにします。

hash -r変更した後は使用する必要はありません。変更する$PATHと自動的にリセットされます。


インストール部分とパスのポイントについての良い点。
kevinarpe 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.