我想使用 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,我不知道早期版本。