【问题标题】:How to exit terminal automatically after exiting tmux退出tmux后如何自动退出终端
【发布时间】:2019-01-25 21:29:22
【问题描述】:

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

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

现在,我可以在我的.zshrctmux.conf 中输入什么,以便一键退出我的 tmux 和终端。

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

【问题讨论】:

  • @CharlesDuffy 抱歉,我忘了说明如何启动 tmux,我现在将重新编辑我的问题。
  • 顺便说一句,关于交互式 shell 使用(而不是脚本)的问题通常更适合 Unix & Linux 或 SuperUser。
  • @CharlesDuffy 好的,谢谢提醒。

标签: shell terminal zsh tmux gnome-terminal


【解决方案1】:

如果您以exec 开头tmux,如:

exec tmux

...父进程 shell 将不再在内存中,因此退出 tmux 不会退出。


因此,在您的点文件中:

if [ -t 0 ] && [[ -z $TMUX ]] && [[ $- = *i* ]]; then exec tmux; fi

[ -t 0 ] 是一项安全功能:如果您的标准输入不是 TTY,它会避免向前移动。同样,$- 检查避免在非交互式 shell 上运行。


顺便说一句——我通常建议将这部分作为你的 terminal 配置,而不是你的 shell 配置的一部分,以避免无意中影响其他类型的 shell(例如通过 sshd 启动的,特别是通过自动化工具而不是人类用户)。脚本不应该模拟 TTY,或者声称它们不是交互式的,但实际上它会发生,因此这种做法可能会导致意外。

【讨论】:

  • 但是我用的是Ubuntu18 gnome-terminal,没有找到终端配置文件。我使用 zsh 作为我的默认 shell,所以我把它放在我的 .zshrc 中。
  • 我使用 GNOME 已经有一段时间了,但我记得它可以通过单击 GUI 菜单进行配置。
  • ...根据unix.stackexchange.com/questions/81165/…,应该有一个选项来使用自定义命令,而不是在 gnome-terminal 配置文件编辑器中调用您的默认 shell。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 2019-03-30
相关资源
最近更新 更多