<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="author" content="magicant"> <meta name="description" content="Yash の exec 組込みコマンドについて"> <title>Yash マニュアル: exec 組込みコマンド</title> <link rel="Contents" href="../index.html" title="目次"> <link rel="Prev" href="eval.html" title="Eval 組込みコマンド"> <link rel="Next" href="exit.html" title="Exit 組込みコマンド"> <link rel="Stylesheet" href="../style.css"> <div class="breadcrumb"><a href="../index.html">目次</a> > <a rel="Up" href="index.html">組込みコマンド一覧</a></div> <h1>Exec 組込みコマンド</h1> <p><dfn>Exec 組込みコマンド</dfn>はシェルのプロセスを別の外部コマンドに置き換えます。またシェルのプロセスに対してリダイレクトを実行します。 <h2 id="syntax">構文</h2> <ul> <li><code>exec [-cf] [-a <var>コマンド名</var>] [<var>コマンド</var> [<var>引数</var>…]]</code> </ul> <h2 id="description">説明</h2> <p>Exec コマンドを<var>コマンド</var>を指定して実行すると、シェルは<a href="../exec.html#simple">単純コマンドの実行</a>の最後のステップと同様にしてコマンドを実行します。ただし、コマンドは必ず外部コマンドとしてみなされ、関数や組込みコマンドは無視します。そしてその外部コマンドはサブシェルではなく現在の<a href="../exec.html#environment">コマンド実行環境</a>で exec システムコールを呼び出すことで実行します。これにより、シェルのプロセスは新しく起動するコマンドによって置き換わります。 <p>シェルが <a href="../posix.html">POSIX 準拠モード</a>のときまたは<a href="../interact.html">対話モード</a>でないとき、コマンドの起動に失敗するとシェルは直ちに終了します。 <p>シェルが POSIX 準拠モードではなくかつ対話モードのとき、コマンドの起動に失敗してもシェルは終了しません。 <p>シェルが POSIX 準拠モードではなくかつ対話モードのとき、停止中のジョブがあると、シェルは警告を表示し、コマンドを起動しません。警告を無視してコマンドを起動するには <code>-f</code> (<code>--force</code>) オプションを付けてください。 <p><var>コマンド</var>なしで実行した場合 exec コマンドは何も行いませんが、この exec コマンドを実行する際に行った<a href="../redir.html">リダイレクト</a>の効果は現在のコマンド実行環境に残ります。 <h2 id="options">オプション</h2> <dl> <dt><code>-a <var>コマンド名</var></code>, <code>--as=<var>コマンド名</var></code> <dd><var>コマンド</var>の代わりに<var>コマンド名</var>をコマンド名としてコマンドに渡します。 <dt><code>-c</code>, <code>--clear</code> <dd>既存の<a href="../params.html#variables">環境変数</a>をすべて削除した状態でコマンドを実行します。ただしこの exec コマンドを実行する際に行った変数代入の結果は環境変数としてコマンドに渡します。 <dt><code>-f</code>, <code>--force</code> <dd>警告を無視してコマンドを実行します。 </dl> <h2 id="operands">オペランド</h2> <dl> <dt><var>コマンド</var> <dd>実行するコマンドです。 <dt><var>引数</var>… <dd>実行するコマンドに渡すコマンドライン引数です。 </dl> <h2 id="exitstatus">終了ステータス</h2> <p>指定されたコマンドの起動に成功した場合、シェルのプロセスはそのコマンドのプロセスに置き換わってしまうので、終了ステータスはありません。 <p>実行しようとしたコマンドが見つからなかった場合、終了ステータスは 127 です。コマンドが見つかったが実行できなかった場合、終了ステータスは 126 です。コマンドを指定せずに exec コマンドを実行した場合、終了ステータスは 0 です。 <h2 id="notes">補足</h2> <p>Exec コマンドは<a href="../builtin.html#types">特殊組込みコマンド</a>です。 <p>POSIX にはオプションに関する規定はありません。よってオプションは <a href="../posix.html">POSIX 準拠モード</a>では使えません。