当前位置: 首页 > news >正文

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

【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
http://www.dtcms.com/a/282651.html

相关文章:

  • aspect-ratio: 1 / 1样式在部分手机浏览器中失效的问题怎么解决?
  • 《R for Data Science (2e)》免费中文翻译 (第0章) --- Introduction
  • CURRENT_TIMESTAMP和NOW函数使用
  • Spring Boot 集成 Redis 并调用 Lua 脚本详解
  • multiprocessing.Pool 中的 pickle 详解
  • 文献精读:气候变化、CO2浓度提高和土地利用变化对全球陆地蒸散发的影响分析
  • C++矿井逃生游戏深度解析:迷宫生成与灯光渲染技术 | EasyX实战
  • 45. 跳跃游戏 II
  • 3.1 认识函数
  • 工作第一步建立连接——ssh
  • [MySQL基础1]数据定义语言DDL与数据操作语言DML
  • Transform的重要方法
  • sktime - 时间序列机器学习统一接口
  • Docker——Redis
  • ollama快速部署使用(windows版)
  • Linux三剑客grep、sed、awk
  • 海盗王如何拍摄和打包小地图
  • 在javaScript里删除节点以及添加节点
  • livecharts 装版本8
  • 预训练模型:大规模数据预学习范式——定义、原理与演进逻辑
  • CSS隐藏元素:display:none vs visibility:hidden
  • S7-200 SMART PLC:模拟量模块接线全解析
  • 新手向:自动化图片格式转换工具
  • PyCharm高效入门指南大纲
  • 如何在 Linux 上下载和安装 Conda/Miniconda
  • 基于 Docker 环境的 JupyterHub 详细部署手册
  • VR 污水厂初体验:颠覆传统认知​
  • 广州 VR 森林防火系统功能探究​
  • Harmony-Next鸿蒙实战开发项目-仿小米商城App----V2
  • DOM 规范中的 MutationObserver 接口