美文网首页工具篇iOS App 优化系列程序员
shell有哪些?Zsh和Bash的区别是什么?

shell有哪些?Zsh和Bash的区别是什么?

作者: MyBigSur | 来源:发表于2020-11-08 23:30 被阅读0次

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


什么是shell?

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

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

有哪些shell?

  • zsh
    很多人的 mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集,它兼容 bash,还有自动补全等好用的功能。
  • 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一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。
  • bash
    bash由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。bash 兼容 sh 意味着,针对 sh 编写的 shell 代码可以不加修改地在 bash 中运行。尽管如此,bash 和 sh 还是有一些不同之处:一方面,bash 扩展了一些命令和参数;另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

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

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

$ echo $SHELL

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

cat /etc/shells
系统中已安装的shell

shell如何配置?

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

最后: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文件读取配置。

相关文章

  • shell有哪些?Zsh和Bash的区别是什么?

    使用Mac系统的朋友应该比较熟悉Zsh和Bash这两个shell,但是对二者具体有什么区别可能不太了解。本文将从这...

  • 关于终端命令的笔记

    1,zsh 和 bash 相互切换 zsh,bash 都是shell脚本,zsh 比bash 更加强大。mac 以...

  • MacOS 的 zsh 和 bash 切换

    zsh、bash 都是 shell,zsh 比 bash 更加强大,功能也更加完善,此篇文章说明 zsh 和 ba...

  • mac bash zsh

    zsh、bash 都是 shell,zsh 比 bash 更加强大,功能也更加完善,此篇文章说明 zsh 和 ba...

  • 终端模式切换zsh与bash

    zsh、bash 都是 shell,zsh 比 bash 更加强大,功能也更加完善,此篇文章说明 zsh 和 ba...

  • Shell 的种类

    Linux中默认的Shell是/bin/bash,流行的Shell有ash、bash、ksh、csh、zsh等,不...

  • Homebrew相关问题

    查看当前shell echo $SHELL zsh切换bash chsh -s /bin/bash bash切换z...

  • zsh 之 iTerm2 + Oh My Zsh

    shell概念:主要的shell有 bash 和 zsh和其他 安装 iTerm2 下载 iTerm2 解压后拖到...

  • [IMU]总结——zsh配置以及环境变量配置

    之前选择的是bash,现在选择用zsh,oh-my-zsh 一、查看当前环境shell 二、查看系统z自带哪些sh...

  • MAC-安装zsh

    什么是zsh? zsh类似bash也是一种shell. zsh优点: 兼容bash; 智能拼写纠正; 各种补全:路...

网友评论

    本文标题:shell有哪些?Zsh和Bash的区别是什么?

    本文链接:https://www.haomeiwen.com/subject/cpvfbktx.html