You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让tmux继承启动它的Shell的$SHELL环境变量?

解决tmux无法继承新$SHELL变量的问题

核心原因

tmux默认会从系统数据库(如/etc/passwd)读取你的登录Shell,而非直接继承当前Shell的$SHELL环境变量,所以即便临时修改了$SHELL,tmux启动时仍会使用旧值。

具体解决步骤

方法1:修改tmux配置强制继承$SHELL

在~/.tmux.conf文件中添加以下内容:

set-option -g default-shell "$SHELL"

保存后,重启tmux或在现有会话中执行tmux source ~/.tmux.conf使配置生效,后续新打开的tmux窗口/面板会使用当前Shell的$SHELL值。

方法2:启动tmux时显式传递$SHELL变量

若不想修改配置,可每次启动tmux时手动指定环境变量:

SHELL=/usr/local/bin/zsh tmux

这样tmux会直接使用你指定的SHELL值。

方法3:更新系统登录Shell(彻底解决)

若想让$SHELL永久生效,直接修改系统登录Shell配置:

  1. 确认/usr/local/bin/zsh已在/etc/shells文件中(你已更新过该文件,可跳过此步)
  2. 执行命令:
chsh -s /usr/local/bin/zsh

执行后注销并重新登录,此时登录Shell已更新为新的zsh,tmux启动时会自动读取该值,无需额外配置。

注意事项

  • 若使用root用户,~/.tmux.conf需对应到/root/.tmux.conf
  • 方法1仅对新创建的tmux窗口/面板生效,已有会话需重启tmux或重新加载配置后新建窗口。

内容的提问来源于stack exchange,提问作者Faxopita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:00:56