exec - コマンドを実行し、ファイル記述子を開く、クローズする、またはコピーする

形式

exec [–a name] [command_line]

tcsh シェル: exec command

説明

execcommand_line 引数は、他のコマンドのコマンド行を指定します。 exec は、新たなプロセスは作成せずにこのコマンドを実行します。このアクションを、現在実行中のシェルの上に コマンドをオーバーレイ する、と捉える人もいます。このように、コマンドが終了すると、制御はシェルの親に戻ります。

command_line 内では、入力リダイレクトおよび出力リダイレクトが有効です。 コマンドで 入力リダイレクトおよび出力リダイレクトのみを指定することによって、シェルの入力および出力記述子を変更することができます。 例えば、以下のとおりです。
exec 2>errors
は、このあとシェルによって実行されるすべてのコマンドの 標準エラー・ストリームを errors にリダイレクトします。

command_line を指定しなかった場合、exec は 正常終了の終了状況を戻します。

tcsh シェルでは、exec は指定されたコマンドを 現行シェルの代わりに実行します。tcsh - C シェルを起動するを参照してください。

オプション

–a name
シェルは、ゼロ番目の引数 (argv[0]) として、command_line に名前を渡します。 –a name は、現行シェルを新規ログイン・シェルに置き換えるのに使用できます。これは、ダッシュ (–) 接頭部を持ったシェルとして名前を指定することにより可能です。

現行シェル・プロセスを新規ログイン・シェル (ログイン・プロファイルを実行する) に 置き換えるためには以下を指定します。
exec -a -sh /bin/sh

使用上の注意

exec は、特殊組み込みシェル・コマンドです。

ローカライズ

exec は、以下のローカライズ環境変数を使用します。
  • LANG
  • LC_ALL
  • LC_MESSAGES
  • NLSPATH

詳しくは、ローカライズを参照してください。

終了値

command_line を指定すると、exec は シェルに戻りません。その代わり、シェルは command_line の終了状況で終了するか、または以下のいずれかの終了状況値で終了します。
1–125
リダイレクト・エラーが発生した。
126
command_line 内のコマンドは検出されたが、実行可能なユーティリティーではなかった。
127
与えられた command_line は、コマンドが現行の PATH 環境内で検出できないため、実行できなかった。

command_line を指定しないと、exec はゼロの終了値を戻します。

移植性

POSIX.2, X/Open 移植性ガイド, UNIX システム.

関連情報

shtcsh