echo $shell可查看当前默认shell路径,如/bin/zsh;用chsh -s /bin/zsh或chsh -s /bin/bash切换,需先确认目标shell在cat /etc/shells列表中,修改后须重启终端并用echo $shell和ps -p $$验证。

直接在终端里输入 echo $SHELL 就能查看当前默认 Shell 的路径,比如显示 /bin/zsh 或 /bin/bash。切换则用 chsh -s 命令,但需确保目标 Shell 已被系统认可。
查看系统支持的所有 Shell
执行以下命令,列出所有被 macOS 允许作为登录 Shell 的路径:
cat /etc/shells
输出中应包含 /bin/zsh、/bin/bash 等。如果想用的 Shell(如通过 Homebrew 安装的 /usr/local/bin/fish)没出现在列表里,得先手动添加:
- 运行 sudo sh -c "echo '/usr/local/bin/fish' >> /etc/shells"
- 输管理员密码完成授权
用 chsh 切换默认 Shell
这是最标准、全局生效的方式,影响所有新登录会话(包括图形界面登录、SSH、新终端窗口等):
- 设为 zsh:chsh -s /bin/zsh
- 设为 bash:chsh -s /bin/bash
- 设为其他已注册 Shell(如 fish):chsh -s /usr/local/bin/fish
输入后会提示你输入当前用户密码。成功无提示,需完全关闭并重新打开终端窗口才能看到变化。
验证是否切换成功
重启终端后,运行两行命令确认:
- echo $SHELL —— 显示登录时指定的默认 Shell 路径
- ps -p $$ —— 查看当前正在运行的 Shell 进程名(更实时)
两者结果应一致。若不一致,说明当前会话仍是旧 Shell,可能因未重启终端或 chsh 执行失败。
临时覆盖(仅限 Terminal 应用)
不想改系统级设置,只希望 Terminal 新建窗口/标签页启动特定 Shell,可跳过 chsh:
- 打开“终端” → “设置” → “通用”
- 勾选“命令(完整的路径)”,填入如
/bin/bash - 新开一个标签页立即生效,不影响其他终端应用(如 iTerm2)或系统登录











