'\" te .\" Copyright 1989 AT&T .\" Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. .\" Portions Copyright (c) 1982-2007 AT&T Knowledge Ventures .TH exec 1 "2011 年 7 月 12 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 exec, eval, source \- 他のコマンドを実行するためのシェル組み込み関数 .SH 形式 .SS "sh" .LP .nf \fBexec\fR [\fIargument\fR]... .fi .LP .nf \fBeval\fR [\fIargument\fR]... .fi .SS "csh" .LP .nf \fBexec\fR \fIcommand\fR .fi .LP .nf \fBeval\fR \fIargument\fR... .fi .LP .nf \fBsource\fR [\fB-h\fR] \fIname\fR .fi .SS "ksh88" .LP .nf \fB*exec\fR [\fIargument\fR]... .fi .LP .nf \fB*eval\fR [\fIargument\fR]... .fi .SS "ksh" .LP .nf \fB+exec\fR [\fB-c\fR] [\fB-a\fR \fIname\fR] [\fIcommand\fR [\fIargument\fR ... ]] .fi .LP .nf \fB+eval\fR [\fIargument\fR]... .fi .SH 機能説明 .SS "sh" .sp .LP \fBexec\fR コマンドはこのシェルの代わりに、argument で指定されたコマンドを、新規プロセスは生成せずに実行します。入出力引数が指定可能で、その他の引数が指定されない場合は、これによってシェルの入出力が変更されます。 .sp .LP \fBeval\fR の組み込みの \fIargument\fR をシェルへの入力として読み取り、生成されるコマンドを実行します。 .SS "csh" .sp .LP \fBexec\fR は現在のシェルの代わりに \fBcommand\fR を実行します。シェルは終了します。 .sp .LP \fBeval\fR は引数をシェルへの入力として読み取り、 生成されるコマンドを実行します。\fI\fR通常この指定は、コマンドまたは 変数置換の結果として生成されたコマンドを 実行するために使用します。 .sp .LP \fBsource\fR は \fIname\fR からコマンドを読み取ります。\fBsource\fR コマンドはネストできますが、あまり深くネストするとシェルのファイル記述子が不足する可能性があります。ソースファイル中のエラーは、それがいかなるレベルであろうと、 入れ子にされたすべての \fBsource\fR コマンドを終了させます。 .sp .ne 2 .mk .na \fB\fB-h\fR\fR .ad .RS 6n .rt \fIname\fR が示す、履歴のリスト上のファイル からコマンドを持ってきますが、実行はしません。 .RE .SS "ksh88" .sp .LP \fBexec\fR 組み込み関数を使用して \fIarg\fR を指定すると、このシェルの代わりに引数で指定されたコマンドを、新規プロセスは生成せずに実行します。入出力引数が指定可能で、現在のプロセスに影響を及ぼす場合があります。引数を指定しない場合は、ファイル記述子が入出力リダイレクションリストの指定どおりに変更されることになります。この場合、この機能を使って開かれた、ファイル記述子番号が 2 より大きいファイルは、別のプログラムを起動すると閉じられます。 .sp .LP \fBeval\fR に続く引数をシェルへの入力として読み取り、 生成されるコマンドを実行します。 .sp .LP このマニュアルページでは、1 つまたは 2 つの * (アスタリスク) が先頭に付加されている \fBksh88\fR(1) コマンドは、次のような特殊な処理を受けます。 .RS +4 .TP 1. コマンドが完了しても、コマンドの直前の変数代入リストは依然として有効です。 .RE .RS +4 .TP 2. \fB入出力のリダイレクトは変数代入後に行われます。\fR .RE .RS +4 .TP 3. エラーが発生すると、それを含むスクリプトは中止されます。 .RE .RS +4 .TP 4. 変数代入形式で、** から始まるコマンドに続くワードは、変数代入と同一の規則で展開されます。つまり、チルド置換は \fB=\fR 符号のあとに実行され、ワード分割とファイル名生成は実行されません。 .RE .SS "ksh" .sp .LP \fBexec\fR は特殊な組み込みコマンドであり、これを使用するとファイル記述子を操作したり、現在のシェルを新しいコマンドに置き換えたりできます。 .sp .LP \fIcommand\fR を指定した場合、\fIcommand\fR を実行してその完了を待機するのではなく、現在のシェルプロセスが \fIcommand\fR によって置き換えられます。シェルでは、可能な場合は常に \fBexec\fR メカニズムが内部で暗黙的に使用されるため、パフォーマンスを向上させるために \fBexec\fR を使用する必要はありません。 .sp .LP オペランドを指定しない場合、\fBexec\fR を使用して、ファイルを開いたり閉じたりできます。また、すべてのコマンドで使用できる標準のリダイレクトメカニズムを使用して、現在のシェル環境で \fB0\fR から \fB9\fR までのファイル記述子を操作することもできます。別のプログラムが呼び出されたときにファイルが閉じられるように、この方法で開かれた、ファイル記述子番号が \fB3\fR 以上のファイルには close-on-exec フラグが設定されます。 .sp .LP \fBexec\fR は特殊なコマンドであるため、どのようなエラーが発生しても、exec を呼び出したスクリプトは終了します。これは、\fBcommand\fR ユーティリティーから \fBexec\fR を呼び出すことで防止できます。 .sp .LP \fBexec\fR を制限付きシェルから呼び出して、ファイルを作成したり、書き込みまたは追加を行うためにファイルを開いたりすることはできません。 .sp .LP \fBeval\fR は、スペースで区切られた複数の \fIargument\fR を連結してコマンドを生成する、シェルの特殊組み込みコマンドです。生成される文字列は、シェルへの入力と見なされ、現在の環境で評価されます。コマンドワードは、2 回 (\fIargument\fR を生成するために 1 回、および生成されたコマンドをシェルが実行するときにもう 1 回) 展開されます。\fIargument\fR が指定されていなくても、エラーにはなりません。 .sp .LP このマニュアルページでは、1 つまたは 2 つの \fB+\fR 記号が先頭に付加されている \fBksh\fR コマンドは特殊組み込みコマンドであり、次のような特殊な処理を受けます。 .RS +4 .TP 1. コマンドが完了しても、コマンドの直前の変数代入リストは依然として有効です。 .RE .RS +4 .TP 2. 入出力のリダイレクトは変数代入後に行われます。 .RE .RS +4 .TP 3. エラーが発生すると、それを含むスクリプトは中止されます。 .RE .RS +4 .TP 4. これらは有効な関数名ではありません。 .RE .RS +4 .TP 5. 変数代入形式で、\fB++\fR から始まるコマンドに続くワードは、変数代入と同一の規則で展開されます。つまり、チルド置換は \fB=\fR 符号のあとに実行され、フィールド分割とファイル名生成は実行されません。 .RE .SH オプション .SS "ksh" .sp .LP \fBksh exec\fR では次のオプションがサポートされています。 .sp .ne 2 .mk .na \fB\fB-a\fR \fIname\fR\fR .ad .RS 11n .rt \fBargv[0]\fR が、コマンドの \fIname\fR に設定されます。 .RE .sp .ne 2 .mk .na \fB\fB-c\fR\fR .ad .RS 11n .rt 現在の \fBexec\fR コマンドの一部である変数代入を除き、実行前にすべての環境変数をクリアします。 .RE .SH 終了ステータス .SS "ksh88" .sp .LP \fBexec\fR により、次の終了値が返されます。 .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 9n .rt 正常終了。 .RE .sp .ne 2 .mk .na \fB\fB1-125\fR\fR .ad .RS 9n .rt リダイレクトエラーが発生しました。 .RE .sp .ne 2 .mk .na \fB\fB127\fR\fR .ad .RS 9n .rt \fIcommand\fR が見つかりませんでした。 .RE .sp .ne 2 .mk .na \fB\fB126\fR\fR .ad .RS 9n .rt \fIcommand\fR は見つかりましたが、実行可能なユーティリティーではありません。 .RE .SS "ksh" .sp .LP \fBexec\fR により、次の終了値が返されます。\fIcommand\fR を指定した場合、\fBexec\fR は何も返しません。 .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 正常終了。すべての入出力のリダイレクトが成功しました。 .RE .sp .ne 2 .mk .na \fB>\fB0\fR\fR .ad .RS 6n .rt エラーが発生した。 .RE .sp .LP \fBeval\fR により、次の終了値が返されます。 .sp .LP \fIargument\fR を指定しない場合、終了ステータスは \fB0\fR となります。それ以外の場合は、\fIargument\fR オペランドによって定義されているコマンドの終了ステータスとなります。 .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/core-os .TE .SH 関連項目 .sp .LP \fBcsh\fR(1), \fBksh\fR(1), \fBksh88\fR(1), \fBsh\fR(1), \fBattributes\fR(5)