zsh の謎の挙動に悩まされていました nohup unko としてプログラムを起動した場合、端末を閉じたり exit コマンドを発行した場合にもそのまま動いていて欲しいものですが、 zsh 上ではこれも終了されてしまう。 しかし、シェルスクリプトを書いてその中で nohup していた場合は端末や zsh を殺しても大丈夫。 ちょっと調べたら答えがあった。 端末を殺した場合のフロー 端末が殺される→中で実行しているシェルに SIGHUP が送られる→シェルがよろくやる んでこれが bash の場合は SIGHUP を送らない のだけど zsh の場合は 子プロセス全部に問答無用で SIGHUP を送る ので、 nohup していても殺されてしまう。 シェルスクリプトの中で nohup していて死なないのは、 端末の死→ zsh にSIGHUP が来る → zsh