【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等后续仍然会有一系列技术博文。
敬请关注、收藏和点赞👍!
您的认可,我的动力!😃
推荐阅读:
- 【Mac技巧】修复Mac应用程序无法打开的解决办法
- 【Mac技巧】添加DNS解析到Hosts文件
- 【Mac技巧】如何安装新字体?
- 一分钟了解Transformer
- 一分钟了解思路链提示词(Chain-of-thought prompting)
- 一分钟了解Kubernetes
- 一分钟了解MCP
- 一分钟了解机器学习
- 一分钟了解大语言模型(LLMs)
- 一分钟了解深度学习
- 一分钟了解manus - 全球首款通用AI Agent