【 hash 】コマンド――シェルが記憶しているコマンドのパスを確認するLinux基本コマンドTips(96)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「hash」コマンドです。

» 2017年03月23日 05時00分 公開
[西村めぐみ@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、シェルが記憶しているコマンドのパスを確認する「hash」コマンドです。

hashコマンドとは?

 シェルがビルトインコマンドではないコマンドを実行する場合、環境変数PATHから該当する実行ファイルを探す必要がありますが、頻繁に使うコマンドは「ハッシュテーブル」と呼ばれる場所に記憶しています。「hash」はこのハッシュテーブルの表示や削除、追加を行うコマンドになります。



hashコマンドの書式

hash [オプション] [コマンド名 コマンド名 ……]

※[ ]は省略可能な引数を示しています




hashコマンドの主なオプション

 hashコマンドの主なオプションは次の通りです。

オプション 意味
-r ハッシュテーブルに記憶しているパス情報を消去する
-d コマンド名 コマンド名に対応する記憶を削除する
-t コマンド名 コマンド名に対応するパス名を表示する
-p パス名 コマンド名 コマンド名に対応するフルパス名を登録する
-l 現在の記憶内容を「hash -p パス名 コマンド名」という書式で出力する(出力を保存しておくとスクリプトとして実行できる)


ハッシュテーブルを表示する

 「type」コマンド(本連載第13回参照)を実行すると、「<コマンド名> is hashed」あるいは「<コマンド名> はハッシュされています」と表示されることがあります。これは、Bashが既にこのコマンドの位置を記憶している、従って環境変数PATHのディレクトリを検索せずにその位置にあるコマンドを実行する、という意味です。

 コマンドの位置を記憶している場所は「ハッシュテーブル」と呼ばれ、hashコマンドでその内容を一覧表示できます。なお、hashはBashのビルトインコマンドです。

 「hash」だけを実行すると、ハッシュテーブルに記憶されているパス名と、そのパスでコマンドを実行した回数が表示されます。また、「hash -t コマンド名」を実行すると、コマンド名に対応するハッシュテーブルの記憶内容を確認することができます(画面1)。複数のコマンドを同時に指定したい場合は、空白で区切ります。

画面1 画面1 hash単独ではハッシュテーブルの内容が表示され、「-t」オプションでコマンド名に対応する記憶内容が表示される。

コマンド実行例

hash

(ハッシュテーブルに記憶されているパスを表示する)

hash -t コマンド名

(コマンド名に対応する記憶内容を表示する)




ハッシュテーブルをクリアする

 ハッシュテーブルは、通常、自動的にメンテナンスされます。しかし、コマンドを削除したり、移動したりした影響などで「ファイルは存在しないのに、ハッシュテーブルにだけ残っている」といった現象が起こることがあります。このような場合には「hash -d コマンド名」で該当するコマンドの記憶を削除したり、「hash -r」でテーブル全てを削除したりすることができます。

コマンド実行例

hash -d コマンド名

(指定したコマンドの記憶を削除する)

hash -r

(ハッシュテーブルを削除する)


 例えば、以下の画面2ではコマンドラインで「tree」と入力したところ、“「/usr/local/bin/tree」がない”というエラーメッセージが表示されています。treeは手動で追加したコマンドで、「rm」コマンドで削除したために「/usr/local/bin」には存在しませんが、ハッシュテーブルにパス情報が残っていたためこのようなエラーが表示されました。

 「hash -d tree」でハッシュテーブルからtreeコマンドの情報を削除すると、「コマンドが見つかりませんでした」というエラーに変わることが分かります(画面2)。

画面2 画面2 「hash -d tree」でtreeコマンドの情報を削除した


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。