程序媛的mac修炼手册-- 终端shell的驾驭 zsh vs bash

进入终端(Terminal)为新下载的应用配置环境,是Mac生产力up up的关键一步,更是编程小白装大神的第一步。Fake it till you make it , 硅谷大神标准路径~

shell的基本原理

为应用配置环境,相当于在应用和操作系统间架桥。由此,在应用端发出的操作指令,才能准确传递给MacOS执行。shell(命令行解释器)就是这座桥。

MacOS这样基于Unix开发的操作系统,有很多种shell,比如:Bourne Again Shell(简称"bash")、 Korn Shell(简称"ksh")、C Shell(简称"csh"),以及升级迭代后的Z shell(简称"zsh")等。

在终端(Terminal)输入以下命令行,就可查看Mac当前支持的shell种类。当前Mac提供了zsh、bash、csh、dash、ksh、sh或tcsh的选择。

复制代码
open /etc/shells

要查看各个shell的路径,可用以下命令行。该命令行中path是/etc/shells中列出的shell路径之一,如/bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh或/bin/tcsh

复制代码
chsh -s path

**MacOS提供了两种系统默认shell,bash和zsh。**2020年前的macOS系统,是将bash作为默认shell。自2021年发布的macOS 12 Monterey 起,Mac上将zsh作为默认shell。因此,小白跟帖学习时,一定要注意帖中的代码操作是基于zsh 还是bash!!可别自个儿看岔了,还埋怨钓鱼帖害人😂😂

当然,如果不小心跑偏了,还是可以用命令行纠正回来的。例如,在设置环境变量,用以下命令行,可将一些设置从bash配置文件移动到zsh配置文件:

复制代码
export MY_SETTING=1

zsh能替代bash成为macOS的默认shell,那必然是升级迭代的结果,zsh提供了一些新功能和新完善。**zsh与bash大部分兼容,但也存在一些差异。**简单说,bash传达的操作指令,zsh一般也能传达,只是有一点点细节差异。比如,把"马冬梅"传递成"Ma Dongmei",而不是大爷连环问"马冬什么,什么冬梅,马什么梅"!!!

macOS默认哪种shell

要辨认系统默认是哪种shell,方法很简单。看环境变量profile的前缀,究竟是zprofile,还是bash_profile。.zshrc相当于.bashrc,并在每个新的终端会话中运行。保持队形,可别跑偏了。

Mac当前登录交互的shell类型,可以在终端(Terminal)最上面的名称栏查看,如下图所示:

更改默认shell

更改macOS默认shell的方法有好几种,详情可参考苹果官网Use zsh as the default shell on your Mac -- Apple Support (UK)

此处本小白当然采用最简单直接的方法:打开终端,根据需要输入以下命令行

从 bash 切换到 zsh

复制代码
chsh -s /bin/zsh

从 zsh 切换到 bash

复制代码
chsh -s /bin/bash

理解zsh和bash的异同

关于zsh和bash在功能特性上的异同,我简单列了一个思维导图,分享给大伙儿凑合看~

关于zsh和bash的命令符差异,可参考这篇帖子
Zsh和Bash究竟有何不同_zsh bash 区别-CSDN博客

相关推荐
小马学嵌入式~9 小时前
堆排序原理与实现详解
开发语言·数据结构·学习·算法
SundayBear10 小时前
Qt 开发修炼指南:从入门到通透的实战心法
开发语言·qt·嵌入式
_w_z_j_11 小时前
C++----bitmap位图的使用
开发语言·c++
BingeBlog11 小时前
[01] Qt的UI框架选择和对比
开发语言·c++·笔记·qt·ui·开源软件
小许学java11 小时前
Spring AI快速入门以及项目的创建
java·开发语言·人工智能·后端·spring·ai编程·spring ai
AGG_Chan11 小时前
flutter专栏--深入了解widget原理
开发语言·javascript·flutter
Darenm11112 小时前
JavaScript事件流:冒泡与捕获的深度解析
开发语言·前端·javascript
whltaoin12 小时前
Java 后端与 AI 融合:技术路径、实战案例与未来趋势
java·开发语言·人工智能·编程思想·ai生态
wjs202412 小时前
jEasyUI 自定义窗口工具栏
开发语言
二十雨辰12 小时前
vite与ts的结合
开发语言·前端·vue.js