如何在不离开我的终端的情况下退出 tmux

How to exit tmux without leaving my terminal

我在 bash 上使用 tmux,并让它从 .bashrc 自动启动。有时我想禁用它,我应该编辑我的 .bashrc 来这样做。每次我禁用 tmux 时都编辑文件非常麻烦,我认为做同样事情的最简单方法是在不离开终端的情况下退出 tmux。我可以这样做吗?

当我键入 exit、bash 并关闭终端时。我试过 exec bash ,但它只是在 tmux 中重新启动 bash。

我根据 https://wiki.archlinux.org/index.php/tmux#Bash.

从下面的代码启动 tmux
if [[ $DISPLAY ]]; then
        # If not running interactively, do not do anything
        [[ $- != *i* ]] && return
        [[ -z "$TMUX" ]] && exec tmux
fi

如果我在上面的代码中只是 运行 tmux 而不是 exec tmux,我就可以实现我的目标。但我不喜欢那样,因为我不明白为什么代码使用 exec tmux 而不是 tmux 并且不想贸然更改它,当我 运行 tmux 我应该输入 exitC-d 两次才能退出终端。

(注意:这道题真的应该上unix.stackexchange.com)。一种简单的解决方案是替换行

[[ -z "$TMUX" ]] && exec tmux

[[ -z "$TMUX" ]] && { tmux; [ ! -f ~/dontdie ] && exit || rm ~/dontdie; }

它像以前一样运行 tmux,但是当它退出时继续测试文件是否存在,~/dontdie。如果文件不存在,则 && exit 完成并且终端像以前一样关闭。但是,如果您在离开 tmux 之前创建文件,那么您将执行 || rm ... 部分,该部分删除文件,并继续完成 .bashrc 文件的其余部分,将您留在 bash shell.

因此,要留在终端中,请从 tmux window 输入命令:

touch ~/dontdie; exit

而不只是 exit,您将退出 tmux 并在 bash 中继续。 为方便起见,您可以在 ~/.tmux.conf 中添加绑定到键,例如 X:

bind-key X send-keys 'touch ~/dontdie; exit' Enter

然后您只需键入您的前缀字符,默认情况下为 Control-B,然后按 X 以创建文件并退出 tmux。