在 tmux 中,我可以使用“exit”退出包含的终端窗口而不是会话本身吗?

在 tmux 中,我可以使用“exit”退出包含的终端窗口而不是会话本身吗?

因此,当我打开一个新终端(我在 Arch Linux 上使用 terminator)时,我将其配置为tmux如果不存在会话则打开一个新会话,或者附加到现有会话。当我exit在提示符下键入时,它会退出 tmux 会话。我必须exit再次键入才能退出终端。我想要的是,键入exit一次将退出终端,但保持tmux运行,因此下次我打开终端时它将重新连接到上一个tmux会话。本质上,这相当于单击窗口管理器的退出按钮,但我希​​望在键入时使用此功能exit

编辑:

这就像我想要的:

alias exit='if [[ $TMUX = "" ]]; then exit; else tmux detach; exit; fi'

但问题是,应该在包含 tmux 会话的终端中exit调用tmux detach,而不是 tmux 会话本身。

答案1

我们必须声明两个函数,一个用于启动 tmux,另一个用于退出 tmux:

function ttmux {
  if (pgrep tmux); then
    tmux attach
  else 
    tmux
  fi
  builtin exit
}

如果 tmux 进程存在或不存在,这将执行(tmux attachment 或 tmux),在您使用完 tmux 后,将执行内置 exit 以关闭终端(如果没有嵌套的 shell)。

function exit {
  if [ ${TMUX} ]; then
      tmux detach
  else 
      builtin exit
  fi
}

如果你在 tmux 中,它将分离它,如果没有,它将执行内置退出

将它们放入您的 .bashrc 或 .zshrc 中,并根据需要更改函数名称,然后调用它们。

>> ttmux # to start tmux
>> exit # to detach tmux

答案2

terminator -e tmux

这将启动终止程序并运行 tmux 而不是 shell。如果 tmux 进程退出,终止程序将立即关闭。

相关内容