退出tmux后如何自动退出终端

时间:2018-08-19 15:17:04

标签: shell terminal zsh tmux gnome-terminal

我不确定是否问过类似的问题,但我在SO中找不到。

我正在使用gnome-terminal + tmux。我在if [ "$TMUX" = "" ]; then tmux; fi中添加了.zshrc,所以当我启动终端时,我会自动输入tmux。每次按Ctrl-D并退出tmux时,都必须再次按Ctrl-D才能退出终端。

现在,我可以在.zshrctmux.conf中放入什么内容,以便仅需按一下即可退出tmux和终端。

我想我可以添加一个侦听器来捕获tmux退出事件。如果发生该事件,请让我退出窗口。但是我不知道如何实现这一目标。任何帮助将不胜感激!

1 个答案:

答案 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时是交互式的,但这在实践中会发生,因此这种实践可能会导致意外。