command コマンド

目的

簡単なコマンドを実行します。

構文

command [-p] command_name [argument...]
command [-p] [-v|-V ] command_name

説明

command コマンドは、指定されたコマンドと引数をコマンドとしてシェルに処理させ、シェル関数の検索を抑制します。

通常、コマンドの前に / (スラッシュ) (特定のパスを示す) が付いていない場合は、シェルは、以下のカテゴリーを検索してコマンドの位置を捜し出します。

  1. 特殊組み込みシェル
  2. シェル関数
  3. 正規組み込みシェル
  4. PATH 環境変数

例えば、正規の組み込み関数と同じ名前の関数があれば、システムはその関数を使用します。command コマンドを使用すると、関数と同じ名前のコマンドを呼び出して簡単なコマンドにすることができます。

command -v コマンドと command -V コマンドは、シェルで使用されるパス名と、シェルがコマンド・タイプ (組み込みコマンド、関数、別名など) をどのように解釈するかを標準出力に書き出します。 -v フラグや -V フラグを指定すると、現行のシェル環境に関連する出力が生成されるので、command コマンドは Korn シェル (POSIX シェル) の正規組み込みコマンドとして提供されます。/usr/bin/command コマンドは、サブシェルまたは別個のコマンド実行環境で呼び出されるので、正しい結果を生成しないことがあります。以下の例で、シェルは別名、サブルーチン、または特殊シェル・コマンドを識別できません。


(PATH=foo command -v)
nohup command -v

フラグ

項目 説明
-p すべての標準コマンドを検索する PATH 環境変数のデフォルト値を使用して、コマンド検索を実行します。
-v 以下の規約に従って、指定されたコマンドを呼び出すために現行シェルが使用するパス名を、標準出力に書き出します。
  • PATH 環境変数で検出されたコマンド、正規組み込みコマンド、/ (スラッシュ) を含むコマンド、および処理系提供の関数は、絶対パス名として書き出されます。
  • PATH 環境変数の検索に関連のないシェル関数、特殊組み込みコマンド、正規組み込みコマンドおよびシェル予約語は、その名前のみが書き込まれます。
  • 別名は別名として識別され、その定義が文字列に含まれます。

指定したコマンド名が見つからなければ、出力は書き込まれず、終了状況の値 >0 が戻されます。

-V 現行のシェル環境によって解釈されるコマンド名が、標準出力に書き出されます。 この出力のフォーマットは未指定で、コマンドが以下のどのカテゴリーに属するかを示します。
  • PATH 環境変数を使用して検出されたコマンド、正規シェル・コマンド、および処理系提供のサブルーチンは、そのとおりに識別され、絶対パス名として書き込まれます。
  • 他のシェル関数は環境として識別されます。
  • 別名は別名として識別され、その定義が文字列に含まれます。
  • 特殊な組み込みコマンドは文字どおりに識別されます。
  • PATH 環境変数の検索に関連しない正規組み込みコマンドは、文字どおりに識別されます。
  • シェル予約語は文字どおりに識別されます。

終了状況

-v または -V フラグを指定すると、以下の終了値が戻されます。

項目 説明
0 正常終了。
>0 command_name パラメーターで指定したコマンドが見つからなかったか、エラーが発生しました。

-v フラグまたは -V フラグを指定しない場合は、以下の終了値が返されます。

項目 説明
126 command_name パラメーターで指定されたコマンドが見つかりましたが、呼び出すことができませんでした。
127 command コマンド内でエラーが発生したか、command_name パラメーターで指定したコマンドが見つかりませんでした。

上記以外の場合、command コマンドは command_name パラメーターで指定されたコマンドに関連する終了状況を返します。

  1. ディレクトリーを変更したときに新しい作業ディレクトリーが出力される cd コマンドのバージョンを作成するには、 以下のように入力します。
    cd () {
            command cd "$@" >/dev/null
            pwd
    }
  2. セキュア・シェル・スクリプトを、 スクリプトがその親による影響を受けないようにして開始するには、 以下のように入力します。
    IFS='
    '
    #       The preceding value should be <space><tab><newline>.
    #       Set IFS to its default value
     
    ¥unalias -a
    #       Unset all possible aliases.
    #       Note that unalias is escaped to prevent an alias
    #       being used for unalias.
     
    unset -f command
    #       Ensure command is not a user function.
     
    PATH="$(command -p getconf _CS_PATH):$PATH"
    #       Put on a reliable PATH prefix.
     
    # ...
    このとき、PATH 環境変数によって呼び出されるディレクトリーに正しい許可が設定されていれば、このスクリプトは間違いなく目的のコマンドを呼び出すことができます。

ファイル

項目 説明
/usr/bin/ksh Korn シェルの command 組み込みコマンドが入っています。
/usr/bin/command command コマンドが入っています。