【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