Bashシェルには、実行可能ファイルのhash -r
内部$PATH
キャッシュをリセットする組み込みコマンドがあります。
このコマンドを使用する必要があるのはいつですか?
Bashシェルには、実行可能ファイルのhash -r
内部$PATH
キャッシュをリセットする組み込みコマンドがあります。
このコマンドを使用する必要があるのはいつですか?
回答:
hash
bash組み込みコマンドです。ハッシュテーブルはbashの機能であり、結果をメモリにキャッシュすることにより、コマンドを入力するたびに$ PATHを検索する必要がなくなります。
そのため、キャッシュ/格納された情報が更新または有効でなくなった場合は、リセットする必要があります。
Unixのstackexchangeに関するこのすばらしい回答の詳細を読んでください。
以前にそのシェル呼び出しでプログラムを実行していて、それから別のバージョンのプログラムを$PATH
検索リストの以前のディレクトリにインストールしたことがある場合は、ハッシュをリセットして新しい場所で見つけられるようにする必要があります。それ以外の場合は、キャッシュを使用して古い場所でプログラムを検索します。
プログラムがの2つのディレクトリにインストールされて$PATH
おり、実行後に以前の場所からコピーを削除した場合も、ハッシュをリセットする必要があります。そうでなければ、それはその場所でそれを見つけようとし、「そのようなファイルまたはディレクトリはありません」と報告します(個人的には、ハッシュが自動的にクリアされて完全な検索が行われるべきだと思いますが、試みたときは起こりませんでした。 )。
実際にはハッシュ全体をリセットする必要はないことに注意してください。次を使用できます:
hash name
その名前だけのキャッシュエントリを強制的に更新するには、または:
hash -d name
そのキャッシュエントリのみを削除します。これらは、他のすべてのキャッシュエントリをそのままにします。
をhash -r
変更した後は使用する必要はありません。変更する$PATH
と自動的にリセットされます。