【MAC技巧】Bash/Zsh切换失败的故障排除

发布于:2025-07-17 ⋅ 阅读:(16) ⋅ 点赞:(0)

【MAC技巧】Bash/Zsh切换失败的故障排除

Troubleshooting to Failure " chsh: no changes made"

By Jackson@ML

在Mac电脑中,终端(Terminal)是常用的命令行工具,对开发和运维至关重要。

依照苹果电脑的系统软件迭代,终端中存有Bash, Zsh两种Shell,且能够互相切换,执行以下命令即可。

$ chsh -s /bin/zsh

或者

 % chsh -s /bin/bash

但是,最近笔者发现,执行这条命令,居然无法进行切换,系统提示 ”chsh: no changes made”(chsh: 未完成改变) 。无论执行多少次,或者重启Mac电脑,结果都是一样。

在这里插入图片描述

这是怎么回事?如何修复这一故障呢?

让我们来一步一步的检测和纠正吧。

1. 查询Shell列表

首先,查看系统Shell列表。
执行以下命令:

$ cat /etc/shells

在这里插入图片描述
发现需要切换的Shell,即bash, zsh均在列表中。

2. 修改默认配置

于是打开Terminal的Settings菜单,如下图所示。

在这里插入图片描述

弹出Settings(设置)对话框,选择Default login shell选项按钮(之前选择的是/bin/bash)。

在这里插入图片描述
退出时,该设置自动保存。

3. 查看用户

接下来,执行命令查看用户列表。

$ who

如下图所示。
在这里插入图片描述
看到当前用户为Coder。

4. 中断用户进程

Pkill命令是管理员用来中断进程的命令,原先用在Solaris等UNIX系统;由于macOS是克隆UNIX开发的系统,因此该命令可用。

于是,执行以下命令:

$ pkill -KILL <username>

在这里插入图片描述

这时候,关闭Bash Shell的命令行窗口,并在状态栏中彻底关闭该应用程序。

注:当存在多个会话时,切换Shell得命令可能不会立即生效。

5. 重启Shell进程

重新打开Terminal就可以重新启动Shell进程,如下图所示。

在这里插入图片描述

我们看到,打开的Terminal终端变为修改的默认Shell即zsh。

6. 重新切换Bash/Zsh

此时,再次执行切换命令:

% chsh -s /bin/bash

在这里插入图片描述
执行成功!

再次打开Terminal,显示为初始化Shell为Bash。

在这里插入图片描述
现在,如果执行同样的命令,效果也会一样。这就解决了切换后无法激活修改Shell的故障。

*注:有些命令可能适用于Linux,但不一定适用于macOS,感兴趣的读者,请自行试验验证。


关于macOS,Shell等后续仍然会有一系列技术博文。

敬请关注、收藏和点赞👍!
您的认可,我的动力!😃

推荐阅读:

  1. 【Mac技巧】修复Mac应用程序无法打开的解决办法
  2. 【Mac技巧】添加DNS解析到Hosts文件
  3. 【Mac技巧】如何安装新字体?
  4. 一分钟了解Transformer
  5. 一分钟了解思路链提示词(Chain-of-thought prompting)
  6. 一分钟了解Kubernetes
  7. 一分钟了解MCP
  8. 一分钟了解机器学习
  9. 一分钟了解大语言模型(LLMs)
  10. 一分钟了解深度学习
  11. 一分钟了解manus - 全球首款通用AI Agent

网站公告

今日签到

点亮在社区的每一天
去签到