% where nohup nohup is a shell built-in /usr/bin/nohup /usr/bin/X11/nohup一方 bash の場合は where が無いので which -a を使ってみる。
$ which -a nohup /usr/bin/nohup /usr/bin/X11/nohup
というわけで、tcshのnohupはシェルビルトインコマンドであり、bashのそれは外部コマンドなのです。
そして挙動ですが、tcshの場合、manpageによると
デフォルトでは、シェルの子供たちもそうしますが、 シェルは終了時に HUP を子供たちに送りません。 hup はシェルが終了時に 子供に HUP を送るようにし、 nohup は子供がHUP を無視するように 設定します。とのこと。一方bashの場合はshoptで確かめます。
$ shopt huponexit huponexit offあれ? いずれにせよ、バックグラウンドジョブにhupが渡らないように見えます、 nohup無くても困らないんじゃない? などと思ってしまうのですが、実はそんな簡単な話でもないようです。
技術 / UNIX / なぜnohupをバックグランドジョブとして起動するのが定番なのか?(擬似端末, Pseudo Terminal, SIGHUP他) http://www.glamenv-septzen.net/view/854
詳細についてはこちらの記事をお勧めします。勉強になります。
0 件のコメント:
コメントを投稿