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.

我已经验证这是一个 zsh 问题,因为它不会在 bash 中重现,并且我已经验证它不是 ssh 问题,因为它确实使用 zsh 中从函数内部启动的任何命令进行重现。

我已经使用 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 回答