如何让 tmux 使用我的默认 shell?

re5*_*5et 191 zsh shell tmux

在新设置中,tmux 使用 bash 而不是我的默认设置 (zsh)。

如何强制它使用 zsh?

小智 259

set-option -g default-shell /bin/zsh
Run Code Online (Sandbox Code Playgroud)

~/.tmux.conf/etc/tmux.conf。在 Fedora 上工作。

您可以使用<leader>: source-file <conf file>例如重新加载配置

<C-b>: source-file ~/.tmux.conf

您需要为每个 tmux 实例执行此操作。否则,您可以使用以下命令重新启动 tmuxkillall tmux; tmux

  • 顺便说一句:重新启动 tmux 意味着 `killall tmux; tmux`。我花了很长时间才弄清楚。 (31认同)
  • 或者简单地从命令行运行`tmux source-file ~/.tmux.conf`。 (17认同)
  • @js-coder:为了更干净地杀死你的 tmux 服务器,我建议改为使用 `tmux kill-server`。 (16认同)
  • 如果这对您不起作用,请确保您已重新启动 `tmux`。看起来很明显,但我花了一个小时才弄清楚! (7认同)
  • 可以在不杀死服务器的情况下重新加载配置:`bind R source-file ~/.tmux.conf \; 显示消息“配置重新加载...”.` (6认同)
  • `killall` 没有在 zesty 上工作。我不得不`pkill tmux`。这些进程被命名为“tmux: server”和“tmux: client”。 (2认同)

Deb*_*XYZ 48

首先,zsh通过在命令行中运行以下命令,确保您的默认 shell 设置正确:

chsh -s $(`which zsh`) $USER
Run Code Online (Sandbox Code Playgroud)

将以下内容放在您的~/.tmux.conf中对于任何 shell来说都是一个更强大的选项。

set-option -g default-shell $SHELL
Run Code Online (Sandbox Code Playgroud)

  • 我认为使用 $SHELL 变量更可靠。但它增加了额外的步骤和混乱,所以我确实更喜欢接受的答案。 (2认同)

小智 24

对于 MacOS 用户,将此行放在您的底部 ~/.tmux.conf

set-option -g default-command "reattach-to-user-namespace -l zsh"
Run Code Online (Sandbox Code Playgroud)

添加后,杀死并重新启动您的 tmux 服务器,一切都应该可以正常工作。

  • `tmux kill-server` 是结束所有 tmux 服务器的命令 (5认同)
  • 呃,有没有迹象表明re5et(OP)在Mac上,或者安装了那个包装程序? (2认同)
  • 虽然这不是 OP 要求的答案,但我最终进入了这个线程,实际上我在 OS X 上,使用这个包装器,这是我需要的解决方案;所以谢谢! (2认同)
  • 这与“set-option -g default-shell”有何不同?以上似乎不适用于 Fish shell。 (2认同)

blu*_*yed 8

tmux 似乎使用SHELL环境变量,所以以下应该工作:

SHELL=/usr/bin/zsh tmux
Run Code Online (Sandbox Code Playgroud)

或者

env SHELL=/usr/bin/zsh tmux
Run Code Online (Sandbox Code Playgroud)


mar*_*aft 7

如果要强制 tmux 使用与环境变量中指定的相同的 shell,可以使用:

# force SHELL ENV variable as shell
set-option -g default-shell ${SHELL}
Run Code Online (Sandbox Code Playgroud)

在您的~/.tmux.conf/etc/tmux.conf.

为了让改变实际生效,你可能需要tmux kill-servertmux重新启动TMUX。


小智 6

接受的答案对我不起作用。

\n

我必须写两个

\n
set -g default-shell  "/bin/bash"\n
Run Code Online (Sandbox Code Playgroud)\n

\n
set -g default-command "/bin/bash"\n
Run Code Online (Sandbox Code Playgroud)\n

在我的~/.tmux.conf\xe2\x80\x94 中不要忘记运行以下命令来重新加载 tmux.conf:

\n
tmux kill-server; tmux\n
Run Code Online (Sandbox Code Playgroud)\n
\n

tmux -V在 Ubuntu 18 下的 gnome-shell 模拟器中使用 2.6。

\n

我还使用https://github.com/samoshkin/tmux-config增强了 tmux 。看看吧,真的很酷。

\n