UNIX/Linuxの部屋 rehashコマンドの使い方


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド rehash ハッシュテーブルを再構築する。csh・tcsh の内部コマンド

csh や tcsh においてコマンドをタイプしたとき、実行可能ファイルを見つけるために、毎回 PATH で指定されたディレクトリを検索するわけではない。csh・tcsh はハッシュテーブルに実行可能なコマンドを登録し、そこからコマンドを呼び出している。

このため、新しくシェルスクリプトを作ったり、パッケージをインストールした場合、実際はパスの通ったディレクトリに実行可能ファイルがあるにもかかわらず、そのコマンドがハッシュテーブルに登録されていないため、コマンドを見付けることができない場合がある。このようなときは rehash でハッシュテーブルの再構築をすることで、シェルに新しいコマンドを認識させることができる。
% cd /home/user
% echo $path
/home/user/bin
% cat > bin/sample (bin/sample にシェルスクリプトを作る)
#!/bin/csh -f
echo test
[Ctrl-D]
% chmod +x bin/sample (実行可能属性をつける)
% sample
sample: command not found.(/home/usr/bin にはパスが通っているのに sample を見付けられない)
% rehash (ハッシュテーブルを再構築)
% sample (実行できる)
test
また、
% /home/user/bin/sample
% ./bin/sample
などと絶対パスで指定すれば、ハッシュテーブルは参照されない。

csh・tcsh で、上記のハッシュテーブルを使用しないようにするには unhash コマンドを使う。

PATH そのものの説明については PATH を参照のこと。

bashの場合
bash のハッシュテーブルは、csh・tcsh と考え方が微妙に異なる。hash コマンドを参照のこと。


頑張って書いたおすすめコンテンツ!