sh vs bash:摘要

如果您正在阅读本文,那么您很有可能在过去遇到过shell,sh,bash等术语。 这些术语听起来可能令人困惑,并且由于它们紧密相关,使问题更加严重。 因此,我决定写这篇文章的目的是试图解释它们之间的差异。

壳牌vs内核

在继续前进之前,重要的是我们了解内核的含义。

核心

内核是操作系统的中心。 它负责执行诸如与硬件交互,执行文件I / O以及生成进程之类的事情。

贝壳

Shell充当用户和内核之间的接口。 从技术上讲,shell是命令行解释器,即解释您在终端仿真器(交互模式)中输入的命令或处理shell脚本(包含命令的文本文件)的程序。

既然我们已经了解了shell和内核,那么我们可以尝试了解sh和Bash

SH

严格来说,sh(或Shell命令语言)是POSIX标准描述的一种编程语言。 这里的关键是sh本身并不是真正的编程语言。 这只是一个规范。 规范是对该语言的语法和语义的详细描述。 规范不包括实现。

重击

有不同的操作系统,它们都有自己的外壳和内核。 Bash是GNU操作系统的外壳。 但是我们也可以说bash是一种编程语言。

等等,这不是令人困惑吗? bash是shell还是编程语言?

想想python。 我们还可以以交互模式启动Python,并且其行为类似于shell。 或JavaScript,Ruby或任何脚本语言。

说得通?

因此,bash是一种编程语言,可以将其视为sh的实现(尽管随着时间的推移而发生了变化)。

总而言之,sh是一个规范,bash是实现。