0

最近、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 のバグなのかはわかりません。

4

1 に答える 1

0

ZSH を最初に

env -i TERM=$TERM zsh -f

つまり、カスタム構成ファイルをソースにしないでください。

ZSH のジョブ制御を制御する重要なオプションはNO_HUP.

superuser.com のこのディスカッションも参照してください。

于 2013-02-20T05:51:18.480 に答える