logoutとexitの違い

logoutとexitの違いを説明する上で、実際に試してみると分かりやすいのでメモ。

logout:ログインシェルを終了する
exit :シェルを終了する

※ログインシェル:OSにログインした時点で適用されるシェ ル
※サブシェル:シェルから起動された子プロセスのシェル($ sh など)


logoutでは、サブシェルは終了できない。

$ sh
$ logout
sh: logout: not login shell: use `exit'

exitでは、ログインシェルも含むシェルを終了できる。

$ exit

また、exit は引数で終了ステータスを指定できる。

$ sh
$ exit 99
exit
$ echo $?
99

引数を指定しなければ、終了ステータスはデフォルトの 0(←2014/10/12修正) 最後に実行したコマンドの終了ステータスになる。

$ sh
$ exit
exit
$ echo $?
0