Mac中的Zsh和Bash你了解吗-程序员宅基地

技术标签: bash  mac  macos  

使用Mac系统的朋友应该比较熟悉Zsh和Bash这两个shell,但是对二者具体有什么区别可能不太了解。本文将从这两个shell入手,对相关概念以及二者区别进行解释。


1.什么是shell?

shell 单词的本意是“壳子”,在计算机领域一样可以理解为机器外面的一层壳,目的是进行用于人机交互,本质上是命令解释器。只要是人与电脑之间交互的接口,就可以称为 shell。
需要说明的是,常见的概念包括shell脚本,其指的是采用shell语言编写的脚本,可以使用shell程序来进行执行,而本文所说的shell均指的是shell程序。二者之间的关系可见下图:

shell命令与shell程序之间的关系

2.有哪些shell?

  • zsh
    很多人的 mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集,它兼容 bash,还有自动补全等好用的功能。
  • sh
    sh的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 shell。
  • csh
    sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。
  • tcsh
    tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
  • ash
    ash是一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。
  • bash
    bash是基于GUN架构开发的,开发者叫史蒂芬博恩,是BourneAgain Shell的缩写。保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。bash 兼容 sh 意味着,针对 sh 编写的 shell 代码可以不加修改地在 bash 中运行。尽管如此,bash 和 sh 还是有一些不同之处:一方面,bash 扩展了一些命令和参数;另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

3.怎么查看自己使用的是哪一个shell?

在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。如果你希望查看当前 Linux或MacOS的默认shell,那么可以输出 shell 环境变量:

$ echo $SHELL

如果想知道自己系统安装了哪些shell,使用如下命令可得到如下所示的信息。

cat /etc/shells

系统中已安装的shell

4.shell如何配置?

如上所说,shell 在启动时都会去找配置文件,然后运行它。你安装的一些脚本,如果想让它能够全局运行,就需要在配置文件中设置路径。有过设置路径后还是不管用的经历吗?多半是因为把配置写在了错误的配置文件里。* 应该在配置shell(最常见的是配置默认命令)之前,使用 echo $SHELL,确认自己现在用的是什么shell后,再去编辑对应的配置文件 *。

5.bash和zsh的区别

一句话,二者均是shell的一种,zsh能基本完美兼容bash的命令,并且使用起来更加优雅。由于bash或zsh本质上都是解释器,他们所共同服务的是shell语言,因此在命令语法上基本相同,部分兼容性差异可参考:zsh和bash的兼容性差异。
二者切换:

  • 切换bash: chsh -s /bin/bash
  • 切换zsh: chsh -s /bin/zsh
  • 在终端app的系统偏好设置里手动设置。

在配置文件方面:

  • bash读取的配置文件:~/.bash_profile文件
  • zsh读取的配置文件:~/.zshrc文件

当从bash切换为zsh时,如果不想重新配置一遍.zshrc文件,可以__在.zshrc文件中加上source ~/.bash_profile,从而直接从.bash_profile文件读取配置。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/efew212efe/article/details/124974336

智能推荐

Linux的chown和chmod授权详解_chmod 400-程序员宅基地

文章浏览阅读2.1k次。chown修改文件和文件夹的用户和用户组属性1。要修改文件hh.c的所有者.修改为sakia的这个用户所有chownsakiahh.c这样就把hh.c的用户访问权限应用到sakia作为所有者2。将目录/tmp/sco这个目录的所有者和组改为sakia和组netchown-Rsakia:net/tmp/scochmod修改文件和文件夹读写执行属性1。把hh.c文件修改为可写可读可执行chmod777hh.c要修改某目录下所有的文件属性为可写可读可执行..._chmod 400

淘宝店铺所有商品API接口,item_search_shop-获得店铺的所有商品API接入说明_商品接口代码-程序员宅基地

文章浏览阅读1.3k次。一、item_search_shop-获得店铺的所有商品API接入说明点击注册获取key和secret测试账号二、建议使用场景1、获得淘宝天猫店铺所有商品2、获取商品详情页数据信息3、商城系统建设4、代购系统商城建设5、ERP系统商品选品三、公共参数说明:名称 类型 必须 描述key String 是 调用key(必须以GET方式拼接在URL中)secret String 是 调用密钥api_name String 是 API接口名称(包括在请求地址中)[item_search,it_商品接口代码

2020.5.22_BeanUtils.copyProperties工具类_单个类、List之间转换_beanutils list转换-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏3次。写此工具类原因:项目代码中 发现大量 使用BeanUtils.copyProperties(),需要先new 对象;当list需要转化时,几乎处处是先声明new ArrayList<>(),再进行 遍历,再单个BeanUtils.copyProperties。共同之处太多,索性直接抽出来,使用的时候不必new。直接调用即可。BeanConverUtil.converList(sourceList,User.class)BeanConverUtil.converList(sourceOb_beanutils list转换

JS——键盘事件和输入框案列_输入框绑定键盘事件,并同步输出键入内容。-程序员宅基地

文章浏览阅读680次。能够说出常用的3-5个键盘事件能够知道如何获取当前键盘按下的是哪个键能够知道浏览器的顶级对象window能够使用window.onload事件能够使用window.onresize事件能够说出两种定时器的区别能够使用location对象的href属性完成页面之间的跳转能够使用location对象获取url中的参数部分能够使用history提供的方法实现页面刷新键盘事件 <script> // 常用的键盘事件 //1. keyup 按键._输入框绑定键盘事件,并同步输出键入内容。

DEV-C++报错不适用C99标准(不支持for循环临时变量在循环中定义)_dev设置c99-程序员宅基地

文章浏览阅读1.5k次,点赞13次,收藏4次。友情提示:在填写该项之后,运行某些程序时会出现没有结果的情况,如c99中可变数组的特性,如果程序本身没有问题,可能由于不支持问题,再将“-std=c99”去除即可。首先点击上方工具->编译选项->编译器(编译时加入以下命令)一栏填写提示中“-std=c99”而第二种方法————只需要根据提示修改编译器就行了。_dev设置c99

Java类与Json互相转换_java class转json-程序员宅基地

文章浏览阅读558次。Java 类与Json字符串 互相转换_java class转json

随便推点

2021-02-19_微软雅黑和微软雅黑正文的区别-程序员宅基地

文章浏览阅读94次。PPT文字与图片的初步了解字体分类衬线字(这种字体起落有修饰) 无衬线字(在ppt中最好用这个)字体的选用标题——微软雅黑 正文——微软雅黑,华文细黑,楷体(优先递减) 英文——(标题)Impack (正文)Arail Black 一般用这两个字体使用时中文与英文的对应 微软雅黑(加粗)——Impack 微软雅黑(未加粗)——Tahoma Arial 黑体——Arial 华文细黑——C..._微软雅黑和微软雅黑正文的区别

机器人工程师学习之路_机器人 学习路线 知乎-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏40次。知乎机器人大佬整理了机器人学习路程,值得收藏,发csdn收藏:https://www.zhihu.com/question/376366749/answer/1124405788_机器人 学习路线 知乎

Visualsfm与meshlab三维重建_meshlab 根据照片重建模型-程序员宅基地

文章浏览阅读6.2k次,点赞4次,收藏57次。Visualsfm与meshlab三维重建 目前使用最方便且广泛的三维重建是利用免费软件visualsfm和meshlab对物体进行三维重建。Visualsfm是基于SIFT提取特征点的匹配软件,能够做到对多幅图像进行特征提取和稀疏点云,稠密点云的生成。Meshlab主要是完成对物体表面的重建和纹理贴图。一般通过泊松表面方程进行表面重建。_meshlab 根据照片重建模型

spring cloud admin 服务监控_spring cloud admin 监控服务-程序员宅基地

文章浏览阅读293次。springcloudadmin服务监控adminserver注册到consul中,自动发现注册到consul中的应用,被监控的应用不需要添加额外的依赖***************************admin server********************导入 jar 包 <dependency>..._spring cloud admin 监控服务

easyui 上 datagrid 的表头的checkbox全选时 取消选中 disabled的checkbox-程序员宅基地

文章浏览阅读338次。业务需求:正常情况下,easyui的全选checkbox会选择表中全部的checkbox包括行。及时对checkbox加了disable属性也没有效果。但是现在的业务是当对checkbox加了disabled的属性,我需要不对disabled的行进行选中:一下是我的解决方案。1,替换掉easyui的表头的checkbox。2,去遍历除表头以外剩下的checkbox(包含dis..._easyui datagrid全选 去除不选择已禁用的checkbox

网上书店软件需求说明书-程序员宅基地

文章浏览阅读2.3k次。1.0 引言1.1 编写目的编写本项目开发计划的目的是把网上书店销售系统的开发过程中对各项工作任务的项目目标、开发团队及人员安排、硬件和软件资源需求、工作分解,项目进度和开发估算等问题所作的安排用文档的形式记载下来,以便根据本计划开展和检查项目开发工作,以保证项目开发成功1.2 背景a)所开发软件的名称:网上书店b)任务提出者:开发者:实现的计算机网络..._网上书店软件设计说明书