Terminal 使用从函数生成的ssh会话关闭终端窗口会孤立ssh,而不是终止它

Terminal 使用从函数生成的ssh会话关闭终端窗口会孤立ssh,而不是终止它,terminal,zsh,Terminal,Zsh,我最近开始通过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) zs

我最近开始通过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中从函数内部启动的任何命令中重现

我使用ZSH4.2.x-5.x.x复制了这个问题


我不了解观察到的行为,但我想了解。我不确定这是预期的还是zsh中的错误。

在最初启动zsh时,您是否也观察到这种行为

env -i TERM=$TERM zsh -f
i、 e.没有您的自定义配置文件来源

控制ZSH作业控制的一个重要选项是
NO\u HUP

另见