2014年03月10日(月) [長年日記]
■ [shell][unix] bashとzshのSIGHUPの扱い
端末からログアウトするとき実行中のジョブにSIGHUPシグナルが通知されるかどうかはシェルの設定で変えられるのでメモ。
bashはhuponexitオプション
シェルオプションの huponexit が shopt を使って設定されていた場合、対話的なログインシェルが終了するときに、 bash は SIGHUP を全てのジョブに送ります。
とある。huponexitオプションを設定しない限りログアウト時のSIGHUP通知は行われない模様。
zshはHUPオプション
HUP <Z>
Send the HUP signal to running jobs when the shell exits.
とあって、この設定はデフォルトで有効みたい。
nohupとdisown
シェルがSIGHUPを通知する設定のとき、特定のジョブに対してだけSIGHUPを通知しないようにしたければnohupやdisown内部コマンドが使える。
zshの&!
zshの場合は、nohupの代わりに&!が使える(バックグラウンド指定の&に続けて!を付与)。