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

gsi*_*011 5 linux terminal bash tmux

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

编辑:

这就像我想要的:

alias exit='if [[ $TMUX = "" ]]; then exit; else tmux detach; exit; fi'
Run Code Online (Sandbox Code Playgroud)

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

Ahe*_*Eid 5

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

function ttmux {
  if (pgrep tmux); then
    tmux attach
  else 
    tmux
  fi
  builtin exit
}
Run Code Online (Sandbox Code Playgroud)

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

function exit {
  if [ ${TMUX} ]; then
      tmux detach
  else 
      builtin exit
  fi
}
Run Code Online (Sandbox Code Playgroud)

如果您在 tmux 内,则会将其分离,否则将执行内置退出

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

>> ttmux # to start tmux
>> exit # to detach tmux
Run Code Online (Sandbox Code Playgroud)


les*_*ana 0

terminator -e tmux
Run Code Online (Sandbox Code Playgroud)

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