在新的设置中,tmux使用bash代替了我的默认设置(zsh)。

如何强制其使用zsh?

评论

弄清楚了。可以在tmux配置中设置以下内容:set -g default-command / bin / zsh set -g default-shell / bin / zsh

FWIW,如果您已设置default-shell,则无需设置default-command。

#1 楼

set-option -g default-shell /bin/zsh
~/.tmux.conf中的

。您可以在Fedora上使用。

您可以使用/etc/tmux.conf重新加载配置,例如,

<leader>: source-file <conf file>

您需要为每个tmux实例执行此操作。否则,您可以使用<C-b>: source-file ~/.tmux.conf重新启动tmux

评论


如果这对您不起作用,请确保已重新启动tmux。似乎很明显,但是花了我一个小时才弄清楚!

–安迪·史密斯(Andy Smith)
2012年9月20日20:55在

顺便说一句:重新启动tmux意味着杀死所有tmux; tmux。花了我一段时间才弄清楚。

–js-coder
2012年12月21日下午14:48

可以在不终止服务器的情况下重新加载配置:bind R源文件〜/ .tmux.conf \;显示消息“配置已重新加载。”。

–ДМИТРИЙМАЛИКОВ
13年7月2日在8:01

或者只是从命令行运行tmux源文件〜/ .tmux.conf。

–石油
14-10-29在12:43

@ js-coder:为了更彻底地杀死您的tmux服务器,我建议改为使用tmux kill-server。

– Chuom
15年2月13日在22:32

#2 楼

首先,通过在命令行中运行以下命令,确保将默认Shell正确设置为zsh:
任何外壳的选项。

chsh -s $(`which zsh`) $USER


评论


不需要设置用户外壳程序(chsh -s),因为tmux提供了独立于此的选项。

–马哈茂德·古德西
17年5月30日下午6:00

我认为使用$ SHELL变量更可靠。但这增加了额外的步骤和混乱,因此我更喜欢公认的答案。

–DebugXYZ
19年1月13日在22:05

这比公认的答案更好。我的zsh未安装在/ bin / zsh中。

–HappyFace
19年8月4日在17:56

#3 楼

将此行放在~/.tmux.conf的底部

set-option -g default-command "reattach-to-user-namespace -l zsh"


添加该行之后,请杀死并重新启动tmux服务器,一切都应能正常工作。

评论


嗯,是否有任何迹象表明re5et(OP)在Mac上,或者已安装该包装程序?

–克里斯·约翰森(Chris Johnsen)
2012年2月1日,7:13

我认为此答案仅适用于Mac OS X

– EhevuTov
13年7月25日在6:29

tmux kill-server是结束所有tmux服务器的命令

–基思笑脸
13-10-14在17:05



尽管这不是OP所要求的答案,但我还是进入了这个线程,的确确实是在OS X上,使用了这个包装器,这是我需要的解决方案。所以谢谢!

–乔斯·奥尔本(Jose Alban)
15/09/24在11:47



这与set-option -g default-shell有何不同?以上似乎不适用于Fish壳。

–汤米(Tommy)
16年2月9日在1:50

#4 楼

tmux似乎使用了SHELL环境变量,因此以下操作应该起作用:

SHELL=/usr/bin/zsh tmux




env SHELL=/usr/bin/zsh tmux


评论


不知道为什么这被否决了。这似乎是正确的:一个常见的问题是例如使用不同的外壳iTerm,但将登录shell保留为/ bin / bash,以确保没有任何非迭代中断。 iTerm不会将$ SHELL设置为新的外壳程序名称(不确定原因),并且bash初始化会将其在启动时设置为登录外壳程序(如果未设置)。如果未明确设置default-shell,则tmux然后使用此值。

–山姆·布莱曼
16年4月4日在8:38

是的..也许env SHELL = / usr / bin / zsh tmux更好? (更新了答案)。

–蓝色
16年11月6日,0:33

#5 楼

如果要强制tmux使用与环境变量中指定的外壳相同的外壳,则可以在~/.tmux.conf/etc/tmux.conf中使用:

# force SHELL ENV variable as shell
set-option -g default-shell ${SHELL}




要使更改真正生效,可能需要先tmux kill-server,然后再tmux重新启动tmux。

评论


这是唯一对我有用的答案(tmux kill-server命令)

–未定义
18年1月27日,0:30

#6 楼

使用chsh(1)

chsh -s /bin/zsh $USER


评论


我已经有了这个设置,但是tmux忽略了它。

–re5et
2011-3-6在5:33

#7 楼

注销并再次登录解决了我的问题。回显$SHELL时仍为/bin/bash,但注销后更改为/usr/bin/zsh

#8 楼

接受的答案对我不起作用。
我必须在我的~/.tmux.conf中同时写
set -g default-shell  "/bin/bash"


set -g default-command "/bin/bash"

—不要忘记运行以下命令来重新加载tmux.conf:
tmux kill-server; tmux


我在gnome-shell模拟器的Ubuntu 18下使用tmux -V 2.6。
我还通过https://github.com/增强了tmux samoshkin / tmux配置看看,真的很棒。

#9 楼

将此添加到您的~/.tmux.conf

set -g default-command /usr/local/bin/fish


#10 楼

对我来说,我必须替换:

default-command "/usr/local/bin/fish"
default-shell "/usr/local/bin/fish"




set-option -g default-command "/usr/local/bin/fish"
set-option -g default-shell "/usr/local/bin/fish"


.tmux.conf
中运行命令tmux kill-server; tmux

评论


这是答案superuser.com/a/1370909/174140的副本。

–174140
19/09/18'9:31

@john我使用了set-option -g而不是set -g。不同版本的tmux最有可能

–阿里·阿敏(Ali Amin)
19-09-19在11:24



set是set-option的别名。

–174140
19-09-19在11:28