在单独的 shell 中创建 tmux 会话

在单独的 shell 中创建 tmux 会话

我想使用 tmux 会话来管理不同 shell 中的窗口/窗格。我注意到,无论使用哪个 shell,tmux 在所有后续会话中始终都会使用首次启动它的 shell。

我有两个 shell。我们把它们称为 a 和 b

在第一个 shell 中我运行:

tmux new -s a

在第二个 shell 中我运行:

tmux new -s b

我最终注意到,tmux 会话 b 使用的实际 shell 是 shell a。环境变量被正确继承,但 shell 本身并不是我期望的那样。

关于如何让 tmux 与多个 shell 良好配合,有什么建议吗?

答案1

您可以创建多个 tmux 服务器,每个服务器使用不同的 shell。

$> SHELL=$(which zsh) && tmux -L zsh-tmux-socket new -s zsh-session
$> SHELL=$(which bash) && tmux -L bash-tmux-socket new -s bash-session

tmux 手册页指出该[-L socket-name]选项允许指定不同的套接字名称,允许运行多个独立的 tmux 服务器

我发现在每个服务器会话中创建的每个新窗口都将使用该会话的 SHELL 环境变量指定的 shell。

这适用于 tmux 1.8,我不知道早期版本。

相关内容