# Command 組込みコマンド

Command 組込みコマンドはコマンドを実行します。またコマンドの種類を特定します。

## 構文

- `command [-befp] コマンド [引数…]`

- `command -v|-V [-abefkp] コマンド…`

## 説明

`-v` (`--identify`) オプションならびに `-V` (`--verbose-identify`) オプションを付けずに実行すると、command コマンドは与えられたコマンドを与えられた引数で実行します。コマンドの実行の仕方は​単純コマンドの実行の最後のステップに準じますが、​コマンドの検索では外部コマンド・組込みコマンド・関数の内オプションで指定したものしか検索しません。またコマンドが​特殊組込みコマンドの場合、コマンドのオプションやオペランドの使い方が間違っていたりリダイレクトエラーや代入エラーが起きたりしてもシェルは終了しません。

`-v` (`--identify`) オプションまたは `-V` (`--verbose-identify`) オプションを付けて実行すると、command コマンドは与えられたコマンドの種類とパスを特定しそれを標準出力に出力します。コマンドは​エイリアスや​関数であっても構いません。

`-v` (`--identify`) オプションを付けて実行したときの出力は以下のようになります。

- コマンドの検索の結果見つかったコマンドおよびその他の外部コマンドは、その絶対パスを出力します。

- コマンドの検索によらず実行される組込みコマンドや関数は、単にその名前を出力します。

- 予約語は、単にその名前を出力します。

- エイリアスは、コマンドとして実行可能な形式でその名前と値を出力します。

- コマンドが見つからなかった場合は、何も出力しません。(終了ステータスが非 0 になります)

`-V` (`--verbose-identify`) オプション使用時は、出力の形式が人間にとってより読みやすくなります。

## オプション

`-a`
`--alias`

  コマンドとして​エイリアスを検索の対象にします。 `-v` (`--identify`) または `-V` (`--verbose-identify`) オプションと一緒に使う必要があります。

`-b`
`--builtin-command`

  コマンドとして組込みコマンドを検索の対象にします。

`-e`
`--external-command`

  コマンドとして外部コマンドを検索の対象にします。

`-f`
`--function`

  コマンドとして関数を検索の対象にします。

`-k`
`--keyword`

  コマンドとして予約語を検索の対象にします。 `-v` (`--identify`) または `-V` (`--verbose-identify`) オプションと一緒に使う必要があります。

`-p`
`--standard-path`

  コマンドの検索において、​`PATH` 変数の代わりに、標準のコマンドをすべて含むようなシステム固有のデフォルトパスを用いて外部コマンドを検索します。

`-v`
`--identify`

  与えられたコマンドの種類とパスを特定し、簡単な形式で標準出力に出力します。

`-V`
`--verbose-identify`

  与えられたコマンドの種類とパスを特定し、人間にとって読みやすい形式で標準出力に出力します。

`-a` (`--alias`), `-b` (`--builtin-command`), `-e` (`--external-command`), `-f` (`--function`), `-k` (`--keyword`) オプションのどれも指定しなかった場合は、以下のオプションを指定したものとみなします。

`-v` (`--identify`) あるいは `-V` (`--verbose-identify`) オプションを指定していないとき

  `-b -e`

`-v` (`--identify`) または `-V` (`--verbose-identify`) オプションを指定しているとき

  `-a -b -e -f -k`

## オペランド

コマンド

  実行するまたは種類を特定するコマンドの名前です。

引数…

  実行するコマンドに渡すコマンドライン引数です。

## 終了ステータス

`-v` (`--identify`) あるいは `-V` (`--verbose-identify`) オプションを指定していないとき

  実行したコマンドの終了ステータス

`-v` (`--identify`) または `-V` (`--verbose-identify`) オプションを指定しているとき

  エラーがない限り 0

## 補足

Command コマンドは​必須組込みコマンドです。

POSIX に規定のあるオプションは `-p`, `-v`, `-V` だけです。これ以外のオプションは POSIX 準拠モードでは使えません。また POSIX 準拠モードでは `-v` または `-V` オプションを使用するときコマンドはちょうど一つしか指定できません。

POSIX は `-v` オプションと `-V` オプションを同時に指定することを認めていません。Yash ではこれら二つのオプションを両方指定すると最後に指定したものが有効になります。