= Exit 組込みコマンド
:encoding: UTF-8
:lang: ja
//:title: Yash マニュアル - Exit 組込みコマンド

dfn:[Exit 組込みコマンド]コマンドはシェルの実行を終了します。

[[syntax]]
== 構文

- +exit [-f] [{{終了ステータス}}]+

[[description]]
== 説明

Exit コマンドは、このコマンドを実行したシェル (または{zwsp}link:exec.html#subshell[サブシェル]) を終了します。

停止している{zwsp}link:job.html[ジョブ]のある{zwsp}link:interact.html[対話モード]のシェルを終了しようとすると、シェルは警告を表示し、終了しません。+-f+ (+--force+) オプションを付けて実行するか exit コマンドを二連続で実行すると警告を無視してシェルを終了します。

シェル終了時の{zwsp}link:_trap.html[トラップ]が設定されている場合は、シェルが終了する前にそれが実行されます。

[[options]]
== オプション

+-f+::
+--force+::
警告を無視してシェルを終了します。

[[operands]]
== オペランド

{{終了ステータス}}::
終了するシェルの終了ステータスを指定する 0 以上の自然数です。
+
このオペランドが与えられていない場合は、exit コマンドの直前に実行されたコマンドの終了ステータスを用います (ただし{zwsp}link:_trap.html[トラップ]を実行中の場合はトラップに入る直前のコマンドの終了ステータス)。
+
終了するシェルの実際の終了ステータスは、オペランドで与えられた数を 256 で割った余りになります。

[[exitstatus]]
== 終了ステータス

Exit コマンドはシェルを終了するので、exit コマンドそのものの終了ステータスはありません。

例外として、exit コマンドが警告を表示して、シェルを終了しなかった場合、exit コマンドの終了ステータスは非 0 です。

[[notes]]
== 補足

Exit コマンドは{zwsp}link:builtin.html#types[特殊組込みコマンド]です。

POSIX では、{{終了ステータス}}の値は 0 以上 256 未満でなければならないとしています。Yash では拡張として 256 以上の値も受け付けるようになっています。

POSIX には +-f+ (+--force+) オプションに関する規定はありません。よってこのオプションは link:posix.html[POSIX 準拠モード]では使えません。

シェル終了時のトラップの実行中に exit コマンドを実行すると、再びトラップが実行されることはなくそのままシェルは終了します。このとき exit コマンドに{{終了ステータス}}が与えられていない場合は、もし終了時のトラップが設定されていなかった場合にシェルが返したろう終了ステータスでシェルは終了します。(link:exec.html#exit[シェルの終了]も参照)

// vim: set filetype=asciidoc expandtab:
