最近、zsh の関数を使用して ssh 呼び出しをラップし始めました。アクティブな ssh プロセスでターミナル (Mac OS X / iTerm2) を閉じると、ssh プロセスは停止せず、孤立していることに気付きました (PPID =1)。これにより、その ssh 接続上のすべての tty アプリケーション (つまり、画面) が接続されます。
この問題を zsh + 関数に絞り込みました。これが再現に必要なすべてです。
zsh# function foo() { ssh user@host.com }
zsh# foo
--> Close the terminal window (via cmd-w)
zsh# ps ax -o pid,ppid,command | tee >(head -1) | grep -v grep | grep ssh
PID PPID COMMAND
29361 1 ssh user@host
zsh# kill 29361
--> everything is OK again.
これは bash では再現されないため、zsh の問題であることを確認しました。また、関数内から開始された zsh の任意のコマンドで再現されるため、ssh の問題ではないことを確認しました。
zsh 4.2.x-5.xx を使用してこの問題を再現しました。
観察された動作を理解していませんが、理解したいです。これが予期されたものなのか、zsh のバグなのかはわかりません。