macOS 自 Catalina(10.15)起默认 Shell 由 Bash 改为 Zsh,echo $SHELL 返回 /bin/zsh,配置文件为 ~/.zshrc;需手动迁移 Bash 配置,修改后执行 source ~/.zshrc 生效;切换回 Bash 需先确保 /bin/bash 在 /etc/shells 中再运行 chsh -s /bin/bash。

macOS 自 Catalina(10.15)起已将终端默认 Shell 从 Bash 切换为 Zsh,这是系统级变更,不是用户手动设置的结果。如果你刚升级系统或重装 macOS,会发现 echo $SHELL 返回 /bin/zsh,且 ~/.zshrc 成为默认的用户配置文件。
确认当前默认 Shell
在终端中运行以下命令即可验证:
-
echo $SHELL—— 显示当前登录 Shell 路径 -
dscl . -read ~ UserShell—— 查看系统记录的默认 Shell -
chsh -s /bin/zsh—— 若显示权限错误,说明当前已是 Zsh;若提示需密码,说明仍是 Bash 或其他 Shell
迁移 Bash 配置到 Zsh
Zsh 不读取 ~/.bash_profile 或 ~/.bashrc,需将原有配置(如 PATH、别名、函数)复制或链接过去:
- 常用做法:在
~/.zshrc中添加source ~/.bash_profile(前提是 Bash 配置较规范,无交互式命令) - 更推荐:把环境变量和 alias 拆出,统一放入
~/.zshrc,例如:export PATH="/usr/local/bin:$PATH"alias ll='ls -la' - 注意:Zsh 的
~/.zshrc默认不被登录 Shell(如 Terminal 启动时)自动加载,除非你设置了DISABLE_AUTO_UPDATE="true"等特殊项,一般无需额外操作
让 Zsh 配置即时生效
修改 ~/.zshrc 后,不用重启终端,只需执行:
-
source ~/.zshrc—— 重新加载当前会话配置 - 或快捷键
Cmd+T新开一个标签页,Zsh 会自动读取 - 如果发现 PATH 重复或命令未生效,可用
echo $PATH和which command排查是否加载了多份配置
切换回 Bash(不推荐,仅限兼容需求)
虽然系统仍预装 Bash(/bin/bash),但新版 macOS 的 Bash 版本较旧(3.2),且不再更新。如确需使用:
- 先确认 Bash 是否在允许列表:
cat /etc/shells,若无/bin/bash,需先用sudo sh -c "echo '/bin/bash' >> /etc/shells"添加 - 再执行:
chsh -s /bin/bash,输入密码后退出终端重进 - 注意:之后
~/.bash_profile恢复生效,~/.zshrc将被忽略










