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

MacOS如何切换shell类型

切换 shell 类型

如果你想在不同的 shell 之间切换,以探索它们的不同之处,或者因为你知道自己需要其中的一个或另一个,可以使用如下命令:
切换到 bash

chsh -s $(which bash)

切换到 zsh

chsh -s $(which zsh)

$()语法的作用是运行

这会提示你输入 macOS 密码。要使更改生效,你需要打开一个新的终端选项卡,或退出并重启终端应用程序。

重要提示:
切换 shell 时,如果你希望使用相同的配置,请确保将 ~/.bash_profile 的内容复制到 ~/.zshrc 中,反之亦然。此外,还要注意任何与两个 shell 不兼容的代码。

如果你不确定如何打开和编辑点文件或隐藏文件(文件名以句点开头的文件,如 .zshrc),请阅读我的 Mac 隐藏文件打开指南。

可能出现的错误

如果你收到一条关于非标准 shell 的信息,这意味着你的 shell 未列在 /etc/shells 中。使用 Homebrew 安装 shell 后可能会出现这种情况,因为你可以获得比 macOS 自带版本更新的 shell。

要让 macOS 知道 shell 的 Homebrew 版本,需要将其添加到 /etc/shells 中。以下是如何安全添加 Homebrew 的 zsh:

找到 Homebrew zsh 的路径:

which zsh

用 Sublime Text 或其他代码编辑器打开 /etc/shells,但不要用 TextEdit:

open /etc/shells -a "Sublime Text"

将 zsh 的输出复制并粘贴到 /etc/shells 底部,然后保存文件。这会提示你输入 macOS 密码。再次运行 chsh -s 命令,这次应该不会再有抱怨了。记得打开新标签页查看新的 shell。

另一种方法

另一种更改 shell 的方法是通过终端应用程序首选项,在 "Shells open with:(用以下内容打开 shell)"部分选择 "Command (complete path)(命令(完整路径))"单选按钮,如下图所示:
在这里插入图片描述
请注意,这不会更改您的默认登录 shell,您可以通过运行 echo $SHELL 来检查。您可以按照以下步骤进行测试:
将登录 shell 设置为 zsh:

chsh -s $(which zsh)

在 ~/.zshrc 的顶部添加这一行:

echo "hello from zsh"

在 ~/.bash_profile 的顶部添加这一行:

echo "hello from bash"

如果文件不存在,可以用 touch 创建:

touch ~/.bash_profile

更新终端首选项,使用 /bin/bash 命令打开 shell,如上图所示。

退出并重启终端。

你应该会看到 “hello from bash”,但如果运行 echo $SHELL,则会看到 /bin/zsh。

我不确定这是否会影响本地开发,所以我会坚持使用默认设置,并使用 chsh -s 来切换 shell。

如果你不确定如何打开和编辑点文件或隐藏文件(文件名以句点开头的文件,如 .zshrc),请阅读我的 Mac 隐藏文件打开指南。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • java链表常见简单面试算法题
  • 优化 .NET Core 应用程序的安全性和性能以应对高负载
  • 前端vue 实现取色板 的选择
  • 【Ant-design】Form表单如何实现某个属性根据接口code显示对应的表单校验效果
  • 揭秘”大模型加速器”如何助力大模型应用
  • AI绘画何以突飞猛进? 从历史到技术突破, 一文读懂火爆的AI绘画发展史
  • 若依 ruoyi-vue SpringBoot highlight-textarea 输入框敏感词关键词高亮标红(二)
  • Python pdfplumber库:轻松解析PDF文件
  • odoo模型继承
  • Android初学者书籍推荐
  • 高智能土壤养分检测仪:农业生产的科技新助力
  • 数据结构——约瑟夫环C语言链表实现
  • 短视频商城系统源码揭秘:架构设计与实现
  • 信立方大模型 | 以AI之钥,开拓智能守护新疆界
  • 访问控制的定义与原理
  • [deviceone开发]-do_Webview的基本示例
  • Android单元测试 - 几个重要问题
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • JS笔记四:作用域、变量(函数)提升
  • js中的正则表达式入门
  • Mybatis初体验
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • vue学习系列(二)vue-cli
  • 创建一种深思熟虑的文化
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 服务器从安装到部署全过程(二)
  • 后端_MYSQL
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 巧用 TypeScript (一)
  • 一份游戏开发学习路线
  • 赢得Docker挑战最佳实践
  • ​人工智能书单(数学基础篇)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (13):Silverlight 2 数据与通信之WebRequest
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (ZT)一个美国文科博士的YardLife
  • (附源码)springboot教学评价 毕业设计 641310
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (数据结构)顺序表的定义
  • (四)Android布局类型(线性布局LinearLayout)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • ***通过什么方式***网吧
  • .md即markdown文件的基本常用编写语法
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @GetMapping和@RequestMapping的区别
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @RunWith注解作用
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • []串口通信 零星笔记
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [C#]科学计数法(scientific notation)显示为正常数字