如何通过终端指令查看并切换 MacOS 当前默认 Shell?
- 内容介绍
- 文章标签
- 相关推荐
本文共计554个文字,预计阅读时间需要3分钟。
直接在终端输入 `echo $SHELL` 就能查看当前默认的Shell路径,例如显示 `/bin/zsh` 或 `/bin/bash`。切换Shell使用 `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)或系统登录
本文共计554个文字,预计阅读时间需要3分钟。
直接在终端输入 `echo $SHELL` 就能查看当前默认的Shell路径,例如显示 `/bin/zsh` 或 `/bin/bash`。切换Shell使用 `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)或系统登录

