【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.pswp.cn/diannao/91455.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卷积神经网络-卷积的分类

卷积的定义卷积是图像处理中最核心的操作之一&#xff0c;其本质是通过卷积核&#xff08;滤波器&#xff09;与图像进行滑动窗口计算&#xff08;像素值乘积之和&#xff09;&#xff0c;实现对图像特征的提取、增强或抑制。一、二维卷积--针对二维矩阵进行处理1.1单通道见得最…

全网首发:使用GIT下载时崩溃退出,是因为机械硬盘

前面有几篇文章&#xff0c;说是GIT下载会退出。开始以为是虚拟机问题。把家里的虚拟机复制到公司&#xff0c;照样崩溃。后来认为是内存不足。昨天在家里下载代码&#xff0c;也崩溃退出。心里觉得奇怪&#xff0c;试了一次&#xff0c;还是退出。差别在哪里&#xff1f;之前是…

YAML 自动化用例中 GET vs POST 请求的参数写法差异

GET 请求&#xff1a;用 params 传参&#xff08;附加在 URL 上&#xff09; config:name: "GET 查询用户信息"base_url: "https://api.example.com"teststeps:- name: "根据 userId 查询用户信息"request:method: GETurl: /api/user/detailpara…

使用 SeaTunnel 建立从 MySQL 到 Databend 的数据同步管道

SeaTunnel 是一个非常易用、超高性能的分布式数据集成平台&#xff0c;支持实时海量数据同步。 每天可稳定高效地同步数百亿数据&#xff0c;已被近百家企业应用于生产&#xff0c;在国内较为普及。 Databend 是一款开源、弹性、低成本&#xff0c;基于对象存储也可以做实时分…

linux服务器换ip后客户端无法从服务器下载数据到本地问题处理

服务器换ip后客户端无法从服务器下载数据到本地&#xff0c;根据上图提示&#xff0c;让用户清理下~/.ssh/known_hosts文件&#xff0c;下载恢复正常。

从0到1实现Shell!Linux进程程序替换详解

目录从0到1实现Shell&#xff01;Linux进程程序替换详解 &#x1f680;引言&#xff1a;为什么进程需要"变身术"&#xff1f;一、程序替换&#xff1a;进程的"换衣服"魔法 &#x1f504;1.1 什么是程序替换&#xff1f;1.2 程序替换的原理&#xff1a;内存…

暑期算法训练.2

目录 6.力扣 11.盛水最多的容器 6.1 题目解析&#xff1a; 6.2 算法思路&#xff1a; 6.2.1 暴力解法&#xff1a; 6.2.2 优化算法&#xff1a; 6.3 代码演示&#xff1a; ​编辑 6.4 总结反思&#xff1a; 7.力扣 611.有效的三角形个数 7.1 题目解析&#xff1a; 7.2…

华为OD 消消乐游戏

1. 题意 游戏规则&#xff1a;输入一个只包含英文字母的字符串&#xff0c;字符串中的两个字母如果相邻且相同&#xff0c;就可以消除。 在字符串上反复执行消除的动作&#xff0c;直到无法继续消除为止&#xff0c;此时游戏结束。 输出最终得到的字符串长度。 输入 输入原始…

小白学HTML,操作HTML文件篇(2)

目录 一、添加多媒体 1.添加网页图片 2.添加网页音频 3.添加网页视频 二、创建容器 1. 标签 2.布局 三、创建表格 1.表格标签 2.添加表格表头 3.添加表格标题 一、添加多媒体 在 HTML 网页中可以轻松地使用标签来添加图片、音频、视频等多媒体&#xff0c;而这些多媒体并…

微服务架构中实现跨服务的字段级权限统一控制

结合集中式权限管理、分布式上下文传递、动态策略执行等技术 ​​一、核心架构设计​​ ​​1. 分层控制模型​​ ​​网关层​​:统一校验用户身份与基础权限,拦截非法请求。 ​​服务层​​:基于用户权限动态过滤数据字段,实现业务级控制。 ​​策略中心​​:集中管理权…

【实现100个unity特效之27】使用unity的ShaderGraph实现一个带裁剪边缘光的裁剪效果(2d3d通用)

文章目录普通裁剪效果1、创建一个Lit Shader Graph2、ShaderGraph前置配置3、添加节点4、效果5、修改裁剪方向带边缘色的裁剪1、在裁剪的基础上添加裁剪边缘光2、边缘的亮度3、修改裁剪方向4、效果5、我们可以代码控制它的变化&#xff0c;如下2D3D游戏通用专栏推荐完结普通裁剪…

Android Scoped Storage适配完全指南

Android Scoped Storage适配完全指南关键词&#xff1a;Android、Scoped Storage、适配、存储权限、文件访问摘要&#xff1a;本文将全面介绍Android Scoped Storage的相关知识&#xff0c;从背景出发&#xff0c;详细解释核心概念&#xff0c;阐述其原理和架构&#xff0c;给出…

Typecho集成PHPMailer实现邮件订阅功能完整指南

文章目录 Typecho使用PHPMailer实现文章推送订阅功能详解 1. 背景与需求分析 1.1 为什么选择PHPMailer 1.2 功能需求 2. 环境准备与配置 2.1 安装PHPMailer 2.2 数据库设计 3. 核心功能实现 3.1 邮件服务封装类 3.2 订阅功能实现 3.2.1 订阅表单处理 3.2.2 确认订阅处理 3.3 文…

无线-二层组网-直接转发

文章目录无线二层组网直接转发&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Datacom专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年07月16日08点00分 无线二层组网 直接转发 本地转发中所有的沿途都需要配置对应VLAN的通过&#xff…

gin go-kratos go-zero框架对比

Gin、Go-Kratos 和 Go-Zero 是 Go 语言中三种常见的服务框架&#xff0c;它们在定位、设计理念、复杂度和适用场景上差异较大。下面我们从功能定位、设计理念、优劣对比、使用建议等维度进行深入对比。&#x1f9ed; 一句话总结框架定位Gin轻量级、高性能的 HTTP 路由框架Go-Kr…

4G模块 A7670发送英文短信到手机

命令说明ATi显示产品的标志信息 ATCIMI查询IMSI ATCICCID从SIM卡读取ICCID ATCGSN查询产品序列号 ATCPIN查询卡状态 ATCSQ查询信号强度 ATCGATT查询当前PS域状态 ATCREG查询GPRS注册状态 ATCEREG查询4G注册状态 ATCGPADDR查询PDP地址 ATCMGF选择短信格式 ATCMGS发送短信流程第一…

归并排序递归法和非递归法的简单简单介绍

基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个…

webrtc之子带分割下——SplittingFilter源码分析

文章目录前言一、频带分割过程1.SplittingFilter的创建2.频带分割整体流程1&#xff09;分割时机2&#xff09;分割规则3&#xff09;分割核心代码3.频带合并二、算法实现1.实现原理介绍2.All pass QMF系统源码1&#xff09;提高精度2&#xff09;经过串联全通滤波器3&#xff…

Java运维之Tomcat升级

Tomcat升级准备工作 下述所有过程中,包含了两种升级方式,一种是备份旧版本的 bin 和 lib,将新版本的 bin 和 lib 对旧版本进行覆盖;另一种是直接备份旧版本的Tomcat包,运行新版本,将旧版本的配置文件(conf/ * )和应用(webapps/ * )等同步到新版本。 1. 到官网下载指…

MySQL的可重复读隔离级别实现原理分析

MySQL 的 可重复读&#xff08;Repeatable Read, RR&#xff09; 隔离级别主要通过 多版本并发控制&#xff08;Multi-Version Concurrency Control, MVCC&#xff09; 和 锁机制&#xff08;特别是间隙锁&#xff09; 来实现的。其核心目标是&#xff1a;在一个事务内&#xf…