iTerm2未使用chsh指定的默认shell问题求助
解决Mac Sonoma下iTerm2默认Shell仍为旧版Bash的问题
以下是针对性的排查和解决步骤:
1. 确认chsh设置是否真正生效
- 打开iTerm2后执行:
如果输出不是echo $SHELL/opt/homebrew/bin/bash,说明系统层面的默认Shell变更未生效:- 先检查
/etc/shells文件,确认/opt/homebrew/bin/bash路径无拼写错误、无多余空格:cat /etc/shells - 尝试通过系统设置修改:打开「系统设置」→「通用」→「传输与隐私」→「高级」→「登录Shell」,手动选择
/opt/homebrew/bin/bash,完成后重启系统。 - 部分Sonoma版本中,
chsh的变更需要重启系统才能完全生效,而非仅重启iTerm2。
- 先检查
2. 检查iTerm2的Profile配置
- 不要只修改全局默认配置,需检查当前正在使用的Profile:
- 打开iTerm2的设置窗口(
Cmd+,) - 切换到「Profiles」标签,选中你日常使用的Profile
- 进入「General」选项卡,确认「Command」选项选择的是Login shell,而非手动指定了
/bin/bash或其他路径——手动指定的Command会覆盖系统默认Shell设置。
- 打开iTerm2的设置窗口(
3. 调整PATH环境变量优先级
- 打开iTerm2后执行:
如果echo $PATH/bin出现在/opt/homebrew/bin之前,那么输入bash时会优先调用系统内置的3.2版本。解决方法:- 在
~/.bash_profile或~/.bashrc文件中添加以下内容(brew安装的Bash会加载这些配置文件):export PATH="/opt/homebrew/bin:$PATH" - 保存后执行
source ~/.bash_profile生效,重启iTerm2验证。
- 在
4. 排查启动脚本是否强制切换Shell
- 检查
~/.bash_profile、~/.bashrc甚至~/.zshrc(如果之前用的是Zsh)中,是否存在类似exec /bin/bash的命令,这类命令会强制切换回旧版Shell,如有则删除相关行。
内容的提问来源于stack exchange,提问作者loadedmind
相关产品推荐
相关产品推荐

