= Hash 組込みコマンド
:encoding: UTF-8
:lang: ja
//:title: Yash マニュアル - Hash 組込みコマンド

dfn:[Hash 組込みコマンド]は外部コマンドのパスを検索・表示します。

[[syntax]]
== 構文

- +hash {{コマンド}}...+
- +hash -r [{{コマンド}}...]+
- +hash [-a]+
- +hash -d {{ユーザ名}}...+
- +hash -dr [{{ユーザ名}}...]+
- +hash -d+

[[description]]
== 説明

オプションを指定しない場合、hash コマンドはオペランドで指定した{zwsp}link:exec.html#search[外部コマンドのパスを検索]し、結果を記憶します (既に記憶している場合は再度検索・記憶します)。

+-r+ (+--remove+) オプションを指定している場合、hash コマンドはオペランドで指定した外部コマンドのパスに関する記憶を消去します。+-r+ (+--remove+) オプションを指定しかつ{{コマンド}}を指定しない場合、全ての記憶を消去します。

+-r+ (+--remove+) オプションを指定せず{{コマンド}}も指定しない場合、記憶しているパスの一覧を標準出力に出力します。

+-d+ (+--directory+) オプションを指定した場合、hash コマンドは外部コマンドのパスの代わりにユーザのホームディレクトリのパスを検索・記憶または表示します。記憶したパスは{zwsp}link:expand.html#tilde[チルダ展開]で使用します。

[[options]]
== オプション

+-a+::
+--all+::
シェルが記憶している全てのパスを出力します。
+
このオプションを指定しない場合、シェルが記憶しているパスのうち組込みコマンドに対するものは出力しません。

+-d+::
+--directory+::
外部コマンドのパスの代わりにユーザのホームディレクトリのパスを扱います。

+-r+::
+--remove+::
指定したコマンドまたはユーザ名に対するパスの記憶を消去します。

[[operands]]
== オペランド

{{コマンド}}::
パスを記憶・消去する外部コマンドの名前です。スラッシュを含むパスを指定することはできません。

{{ユーザ名}}::
ホームディレクトリのパスを記憶・消去するユーザ名です。

[[exitstatus]]
== 終了ステータス

エラーがない限り hash コマンドの終了ステータスは 0 です。

[[notes]]
== 補足

シェルは、外部コマンド (またはチルダ展開) を実行する際に自動的にコマンド (またはホームディレクトリ) のパスを記憶するので、通常はわざわざ hash コマンドを使ってパスを記憶させる必要はありません。

link:params.html#sv-path[+PATH+ 変数]の値が変わった時は、記憶した外部コマンドのパスは自動的にすべて消去されます。

POSIX が規定しているオプションは +-r+ だけです。よって他のオプションは link:posix.html[POSIX 準拠モード]では使えません。

Hash コマンドは{zwsp}link:builtin.html#types[準特殊組込みコマンド]です。

// vim: set filetype=asciidoc expandtab:
