ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- 単純コマンドの実行
command [-p] command_name [argument]...
command [-v | -V] command_name
command [-pvxV] [command_name [argument...]]
command ユーティリティを使用すると、シェルは関数の検索を実行せずに、指定された引数を単純コマンドとして扱います。
command_name が特殊組み込みユーティリティーのいずれかの名前と同じ場合、特殊プロパティーは発生しません。その他の点では、command_name が関数の名前でない場合、通常、command (オプションなし) の効果は、command を省略した場合と同じになります。
command ユーティリティーは、シェルによるコマンド名の解釈方法についての情報も提供します。-v および -V を参照してください。
-v や -V オプションを指定しない場合、command は argument で指定された引数を使って command_name を実行します。通常行われるシェル関数の検索は抑制されます。また、command が特殊な組み込みコマンドの場合、特殊プロパティーを削除することで、失敗してもそれを実行するスクリプトが終了されないようにします。
-v または -V オプションが指定されている場合、command は whence(1) と同等です。
/usr/bin/command では次のオプションを使用できます。
すべての標準ユーティリティの検索を可能にする PATH のデフォルト値を使用して、コマンド検索を実行します。
現在のシェル実行環境で command_name を呼び出すためにシェルが使用するパスまたはコマンドを示す文字列を標準出力に書き込みますが、command_name を呼び出しません。
ユーティリティー、正規の組み込みユーティリティー、スラッシュ文字を含む command_names、および PATH 変数を使用して検出される、実装で提供されている関数は、絶対パス名として書き込まれます。
シェル関数、特殊組み込みユーティリティー、PATH 検索に関連しない正規の組み込みユーティリティー、およびシェル予約語は、単純に名前として書き込まれます。
別名は、別名定義を表すコマンド行として書き込まれます。
それ以外の場合、出力には何も書き込まれず、終了ステータスに名前が検出されなかったことが示されます。
現在のシェル実行環境で、command_name オペランドで指定された名前をシェルが解釈する方法を示す文字列を、標準出力に書き込みますが、command_name を呼び出しません。この文字列の書式は規定されていませんが、出力文字列は指定した command_name が属するカテゴリを示し、次の情報を含みます。
ユーティリティー、正規の組み込みユーティリティー、および PATH 変数を使用して検出される、実装で提供されている関数では、そのように識別され、文字列に絶対パス名が含まれています。
これ以外のシェル関数は関数として識別されます。
別名は別名として識別され、その定義は文字列に含まれています。
特殊組み込みユーティリティーは、特殊組み込みユーティリティーとして識別されます。
PATH 検索に関連しない正規の組み込みユーティリティーは、正規の組み込みユーティリティーとして識別されます。
シェル予約語は、予約語として識別されます。
ksh の command では次のオプションがサポートされています。
PATH の値で定義されているパスではなく、デフォルトパスを検索します。
次と同等です。
whence command [argument ...]
次と同等です。
whence -v command [argument ...]
引数が多すぎるためにコマンドが失敗した場合は、コマンドが複数回呼び出され、呼び出しごとに引数のサブセットが使用されます。複数の引数に展開する最初のワードの前の引数と、複数の引数に展開する最後のワードのあとの引数は、各呼び出しに渡されます。終了ステータスは呼び出しの最大終了ステータスです。
次のオペランドがサポートされています。
command_name への引数として扱われる文字列の 1 つ。
ユーティリティまたは特殊組み込みユーティリティの名前。
例 1 新しい作業ディレクトリを常に出力する cd を作成する
次の例では、常に新しい作業ディレクトリを一度だけ出力する 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 で呼び出されるディレクトリに適切なアクセス権が付与されていれば、スクリプトは、スクリプトが呼び出すユーティリティーはすべて目的のものであることを保証できます。実装拡張機能が存在でき、それによって呼び出し時にユーザー関数が存在できることが前提となっているため、慎重を期しています。この機能は本書では規定されていませんが、拡張機能としては禁止されていません。たとえば、ENV 変数は、ユーザー起動スクリプトを使用するスクリプトの呼び出しに先行します。このようなスクリプトでは、アプリケーションになりすます関数を定義している場合があります。
command の実行に影響を与える次の環境変数については、environ(5) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、および NLSPATH。
コマンド検索中に使用される検索パスを決定します。-p オプションが指定されている場合は除きます。
-v または -V オプションを指定すると、次の終了値が返されます。
正常終了。
command_name が検出できなかったか、エラーが発生しました。
それ以外の場合は、次の終了値が返されます。
command_name で指定したユーティリティは見つかりましたが、呼び出せませんでした。
command ユーティリティでエラーが発生したか、あるいは command_name で指定したユーティリティが見つかりませんでした。
それ以外の場合、command の終了ステータスは、command_name 引数で指定した単純コマンドの終了ステータスになります。
command が呼び出されると、command の終了ステータスが command の終了ステータスになります。それ以外の場合は、次のいずれかになります。
command_name が正常に完了しました。
-v または-V が指定され、エラーが発生しました。
command_name は見つかったが、呼び出すことができませんでした。
command_name は見つかりませんでした。
属性についての詳細は、attributes(5) を参照してください。
|
|
ksh(1), sh(1), type(1), whence(1), attributes(5), environ(5), standards(5)