シェルでexitを記載した場合の挙動
シェルでexitコマンドを入力すると、現在のシェルセッションが終了します。
具体的には、シェルが実行中のプロセスが終了し、シェルウィンドウやターミナルが閉じる、またはログアウト状態になります。
この挙動は、ユーザーがシェルを使用している環境によって若干異なることがありますが、基本的な動作は以下の通りです。
1. 通常のシェルセッションでの挙動
- exitコマンドを実行すると、シェルはプロンプトから即座に終了し、シェルの親プロセスに制御が戻されます。
もしシェルが親プロセスであった場合(たとえば、ユーザーがログイン後に最初に開いたシェル)、そのシェルウィンドウやターミナル自体が閉じられるか、またはログアウトしてシステムから切断されることになります。
$ exit
このコマンドを入力すると、ターミナルは終了します。
2. サブシェルでの挙動
- サブシェル(たとえば、bashコマンドで新しいシェルを開いた場合)でexitを入力すると、そのサブシェルのみが終了し、元のシェルプロンプトに戻ります。
例えば、bashコマンドを実行して新しいBashシェルを開いた後、exitを入力すると、元のシェルに戻ります。
$ bash
bash$ exit
$
3. スクリプトでの使用
- exitコマンドは、シェルスクリプト内で使用することもでき、スクリプトの実行を終了させるために使われます。
スクリプト内でexitを使用すると、その時点でスクリプトの実行が停止し、オプションで終了ステータス(数値)を指定することで、終了理由を示すことができます。
#!/bin/bash echo "スクリプト開始" exit 1 echo "このメッセージは表示されません"
上記のスクリプトを実行すると、「スクリプト開始」というメッセージが表示されますが、exit 1でスクリプトが終了するため、最後のメッセージは表示されません。
4. 終了ステータス
- exitコマンドは、オプションで終了ステータスを指定できます。
このステータスは0から255の整数で、シェルやスクリプトが正常に終了したかどうかを示すために使われます。
一般的には、0は正常終了、1以上はエラーや異常終了を示します。
exit 0 # 正常終了 exit 1 # エラー終了
5. シェルによる違い
- ほとんどのシェル(Bash、Zsh、Fishなど)はexitコマンドをサポートしており、その挙動はほぼ同じです。
しかし、シェル固有の設定やエイリアスによって、exitコマンドの挙動がカスタマイズされることがあります。
例えば、特定のシェルでは、シェルセッションが終了する前に特定のクリーンアップ処理を自動的に実行するように設定できることがあります。
シェルの使用状況によっては、exitを使ってセッションを終了する前に保存作業やプロセスの確認が必要になることもあるため、実行する際には注意が必要です。