希望这篇文章的标题具有足够的描述性。
正如 tmux 手册中详细记录的那样,tmux
每次启动新的 tmux 窗口或窗格(拆分)时都会启动登录 shell。
相反,我如何配置tmux
为每个会话仅启动一个登录 shell(可能是第一个窗口),并且创建的任何后续窗口/窗格都应是非登录 shell?
如果这是不可能的,至少我可以配置 tmux,以便在启动服务器时,它将读取~/.bash_profile
或~/.profile
,但其中启动的任何窗口tmux
都应是普通(非登录)shell?
答案1
您可以使用 Tmux 选项的包装脚本default-command
。我已经成功地使用以下安排一段时间了:
将以下脚本放在某处
PATH
,例如/usr/local/bin/tmux-default-command
#!/bin/sh default_shell=$(tmux show-options -gqv default-shell) default_shell=${default_shell:-$SHELL} default_shell=${default_shell:-/bin/bash} current_window=$(tmux display-message -p '#I') if [ "$current_window" = "0" ]; then tmux rename-window "Hello" && exec "$default_shell" -l else exec "$default_shell" fi
在 Tmux 配置中
default-shell = '/bin/bash' # optional default-command = 'tmux-default-command'
-HTH