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

智能推荐

最大似然函数和最小二乘法解析_最大似然估计和最小二乘估计的区别和联系-程序员宅基地

文章浏览阅读1.1k次。最大似然函数和最小二乘法的区别和理解:对于最小二乘法,当从模型中选择n个样本观察值时,参数的合理性要求就是让模型更好地拟合这个样本数据,就是让观察值和估计值之间的误差更小。而对于最大似然函数,当从模型中选择n个样本观察值时,合理的参数估计就是让从模型抽取这n个样本观察值的概率最大化。这是从不同的原理出发的两种参数估计法。在最大似然法中,通过选择参数,让已知数据在某种意义上最有可能出现,这个某种..._最大似然估计和最小二乘估计的区别和联系

Educoder Linux从入门到精通 第4章 Linux文件/目录管理_educoderlinux目录文件的读取操作-程序员宅基地

文章浏览阅读896次,点赞3次,收藏3次。touch file1 file2rm -rf oldFile1 oldFile2可以使用ls命令来查看目录是否删除成功。mkdir newDir1 newDir2rm -rf oldDir2rmdir oldDir1 oldDir2cp file1 file2 Dircp file1 Dir/file1Cpymv file3 file4 Dirmv file5 file64cp -r Dir1 Dir2 Dircp -r Dir1 Dir/Dir1Cpymv Dir.._educoderlinux目录文件的读取操作

【CentOS】在Centos7 下无图形界面安装 Oracle11g-程序员宅基地

文章浏览阅读918次,点赞34次,收藏10次。修改文件 /etc/rc.d/rc.local。修改文件 /etc/rc.d/rc.local。修改文件 /etc/rc.d/rc.local。将用户oracle加入到oinstall组。将用户oracle加入到oinstall组。将用户oracle加入到oinstall组。创建用户oracle 并加入到dba组。创建用户oracle 并加入到dba组。创建用户oracle 并加入到dba组。禁止开机使用firewalld防火墙。禁止开机使用firewalld防火墙。禁止开机使用firewalld防火墙。

数据思维 实验二 线性代数 (大数据数学基础(Python语言描述))_输出该工厂四个季度生产a b numpy-程序员宅基地

文章浏览阅读3.7k次,点赞14次,收藏57次。一、实验目的及要求掌握行列式的应用。掌握矩阵运算的计算机语言描述。二、实验主要内容1、已知等差序列中前 nnn 项的和为 Sn=an2+bn(n∈N),S_{n}=a n^{2}+b n(n \in N),Sn​=an2+bn(n∈N), 假设等差序列 {an}\left\{a_{n}\right\}{an​} 的前 mmm 项 的和为 30,前 2m2 m2m 项的和为 100,求它的前 3m3 m3m 项的和。根据等差数列求和公式性质:在等差数列中,若SmS_mSm​为该数列的前mmm项和,_输出该工厂四个季度生产a b numpy

zookeeper 大量连接断开重连原因排查_zookeeper服务leader断开连接报错-程序员宅基地

文章浏览阅读7.4k次。问题现象最后发现线上的zookeeper的日志zookeeper.out 文件居然有6G,后来设置下日志为滚动输出,参考:http://blog.csdn.net/hengyunabc/article/details/19006911但是改了之后,发现一天的日志量就是100多M,滚动日志一天就被冲掉了,这个不科学。再仔细查看下日志里的内容,发现有很多连接建立好,马上又断开:_zookeeper服务leader断开连接报错

我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)-程序员宅基地

文章浏览阅读1.8k次。在上一篇《我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)》中提到的两个类:GameConf:负责管理游戏的初始化设置信息。GameService:负责游戏的逻辑实现。其中GameConf的代码如下:cn\oyp\link\utils\GameConf.java[java] view pla

随便推点

分享一下老型号macbook pro在win10下安装BootCamp6.0驱动的方法_cirrus logic cs4206b-程序员宅基地

文章浏览阅读7.5w次,点赞3次,收藏43次。本人mac pro 2011的本子,直接换了块ssd硬盘(该盘从另一非mac电脑拿过来的,里面只有win10系统),换上后驱动都正常就是没有声音,耳机孔出有红灯光。按以下方法将声卡装好了,也有声音了。装好后声卡驱动显示的是Cirrus Logic CS4206B(AB 28),之前一直显示High Definition 这个。以下转自:http://bbs.feng.com/for_cirrus logic cs4206b

[Matlab] matlab将三维数组转为二维数组_怎么用matlab把三维数组,保存为n个二维数组-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏12次。在使用matlab做实验时,我遇到一个问题是将一个303012的三维数组转化成3012的数组,采用平均值的方式,在y轴上取平均值。首先取平均值matrix = mean(matrix,1);然后size(matrix)发现维度为301*12,把脱狱的维度去掉可以使用matrix = squeeze(matrix);综上:具体实现代码为:matrix = squeeze(mean(matrix..._怎么用matlab把三维数组,保存为n个二维数组

ST 意法半导体人工智能(AI)X-CUBE-AI 扩展包入门指南-程序员宅基地

文章浏览阅读1.2k次,点赞37次,收藏33次。X-CUBE-AI 通过提供在计算和存储器(RAM 和闪存)方面均已优化的自动神经网络库生成器扩展STM32CubeMX,该生成器将预训练的神经网络从最常用的 DL 框架(如 Caffe、Keras、Lasagne 和 ConvnetJS)转换为自动集成到最终用户项目的库。X-CUBE-AI 内核引擎,如图 1 和图 2 所示,是 X-CUBE-AI 扩展包的一部分,之后将在第 1.3 节 介绍。本文档的第二部分详细说明了 X-CUBE-AI 自动生成的 NN 库,以及嵌入式客户端推理 API。

python request库用法_Python学习之Requests库-程序员宅基地

文章浏览阅读295次。python中的Requests库是封装好的用来请求http并返回对应结果的python用具初识Requests库Requests环境准备安装piphttps://pypi.python.org/pypi/pip#downloads点击上面的连接下载pip,完成后解压到本地目录,在cmd命令行下进入解压目录执行下面命令:python setup.py install完成之后,在命令行下执行pip命..._unresolved import: requests

电子邮件伪造_伪装别人的邮件地址发邮件-程序员宅基地

文章浏览阅读1.1k次,点赞24次,收藏30次。电子邮件伪造是指发送者故意篡改邮件头部信息,以使邮件看起来似乎是来自另一个人或组织的行为。这种行为可能用于欺骗、诈骗、垃圾邮件发送等目的。_伪装别人的邮件地址发邮件

《深度学习中的自适应学习率优化算法详解与应用》_自适应优化算法-程序员宅基地

文章浏览阅读476次,点赞9次,收藏9次。在深度学习领域,优化算法一直是研究和应用的热点之一。其中,自适应学习率优化算法因其在训练深度神经网络时的高效性备受关注。本文将深入探讨自适应学习率优化算法的原理,详细解析其在深度学习中的应用,并结合实例进行演示。深度学习中的自适应学习率优化算法是一个广泛研究的领域,本文只是对其中的一部分内容进行了深入解析。希望通过本文的介绍,读者能够对自适应学习率算法有更深入的理解,并在实际项目中灵活运用,提高深度学习模型的训练效果。_自适应优化算法

推荐文章

热门文章

相关标签