Terminal 使用从函数生成的ssh会话关闭终端窗口会孤立ssh,而不是终止它
我最近开始通过zsh中的一个函数包装我的ssh调用,我注意到现在如果我用一个活动ssh进程关闭一个终端(Mac OS X/iTerm2),ssh进程不会死,而是孤立的(PPID=1)。这随后会在该ssh连接上连接任何tty应用程序(即屏幕) 我已经把这个问题缩小到zsh+函数。这就是复制的全部条件: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# 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
另见