我不确定是否问过类似的问题,但我在SO中找不到。
我正在使用gnome-terminal + tmux。我在if [ "$TMUX" = "" ]; then tmux; fi
中添加了.zshrc
,所以当我启动终端时,我会自动输入tmux。每次按Ctrl-D
并退出tmux时,都必须再次按Ctrl-D
才能退出终端。
现在,我可以在.zshrc
或tmux.conf
中放入什么内容,以便仅需按一下即可退出tmux和终端。
我想我可以添加一个侦听器来捕获tmux退出事件。如果发生该事件,请让我退出窗口。但是我不知道如何实现这一目标。任何帮助将不胜感激!
答案 0 :(得分:2)
如果您以tmux
开始exec
,如下所示:
exec tmux
...父进程外壳将不再存在于内存中,因此退出tmux不会退出。
因此,在您的点文件中:
if [ -t 0 ] && [[ -z $TMUX ]] && [[ $- = *i* ]]; then exec tmux; fi
[ -t 0 ]
是一项安全功能:如果您的stdin不是TTY,则可以避免前进。同样,$-
检查可避免在非交互式外壳上运行。
顺便说一句-为了避免无意影响其他类型的外壳,我通常建议您将此部分设置为您的 terminal 配置,而不是您的 shell 配置的一部分。例如通过sshd启动的代码,特别是通过自动化工具而非人工用户启动的代码)。脚本不应模拟TTY,或声称外壳在不存在TTY时是交互式的,但这在实践中会发生,因此这种实践可能会导致意外。