网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

sh与bash之间的区别

更新时间:2026年03月27日   作者:spoto   标签(Tag):

Bash和Sh是Unix操作系统的两种不同外壳程序。 Bash其实就是Sh,不过Bash具有更多的功能,并且语法也更为简洁明了。 Bash 其实就是“Bourne Again SHell”的简称。它是对原来的 Bourne shell 进行改进后的版本。 Shell脚本编写是指在任何shell环境中进行的脚本编写工作,而Bash脚本编写则特指在Bash环境下进行的脚本编写工作。 SH是一种用于Unix/类Unix操作系统的shell命令行解释器。 sh提供了一些内置的命令。 Bash是sh的超集。 Shell是一种命令行界面,用于执行命令和shell脚本。 贝壳也有各种各样的味道,就像操作系统也有各种不同的版本一样。 因此,Shell实际上是一种连接用户与操作系统的接口,它帮助用户与设备进行交互。

sh:

#!/bin/sh

bash:

#!/bin/bash

注意:

  • Shell是用户与操作系统之间的接口。
  • 它实现了shell接口。
  • Bash是sh的超集。

sh:

“sh”也被称为“Bourne Shell”。它是一种由POSIX标准定义的命令编程语言。它适用于UNIX或类UNIX操作系统。目前有多种实现方式。在大多数操作系统中,sh是由诸如dash、kash以及原始的Bourne Shell这样的程序来实现的。sh是bash的前身。/bin/sh则是一个指向这些主要实现方式的符号链接。在大多数POSIX系统中,/bin/sh实际上就是一个符号链接。

SH本身并不是一种编程语言。它只是一种规范或描述而已。SH是对该语言的语法和语义的详细描述,其中并不包含具体的实现方式。SH被设计来替代早期的UNIX shell。其大部分语法与ALGOL68编程语言的语法相同。

如果我们希望自己的编程语言能够与多种系统兼容,那么我们应该使用 sh 语言。sh 脚本在 bash 环境中也能正常运行,因为 bash 与 sh 语言是向后兼容的。sh 是一种非常易于移植的脚本语言,可以在大多数 POSIX/Unix/Linux 系统上运行。sh 的一个优点就是,它一定存在于所有声称支持 Unix 系统的系统中。

bash:

Bash也是一种命令编程语言,与sh类似。如今,Bash已成为大多数基于Linux的操作系统的默认登录Shell。它实际上是sh系统的扩展版本,用于替代Bourne Shell。可以说,Bash也是一种编程语言。就像Python一样,我们可以以交互模式运行Bash,此时Bash的行为类似于一个shell。不过,我们也可以在任何集成开发环境中运行Bash编写的程序。

Bash是sh的扩展版本。这意味着Bash不仅继承了sh的功能,还提供了更多的功能。虽然大多数命令与sh的功能相同,但Bash并不符合POSIX标准。它实际上是POSIX shell语言的变体而已。Bash可以在文本窗口中运行,用户可以通过解释命令来完成各种任务。Bash拥有Korn和C shell所具备的最佳且最实用的功能,比如目录操作、作业控制、别名等等。

与GNU软件类似,Bash也提供了其他shell工具,其中包括csh的版本。因此,Bash是默认的shell环境。Bash旨在实现IEEE POSIX规范中关于Shell和工具的条款(IEEE标准1003.1)。与其他GNU工具一样,Bash也具有很好的可移植性。只要系统上安装了Bash,那么在任何基于Linux/Unix的系统上都可以使用Bash。在编程和交互式使用方面,Bash比sh更实用。

sh与bash之间的区别:

bash

sh     

  • Bourne Again SHell
  • SHell
  • 由 Brain Fox 开发而成
  • 由 Stephen R. Bourne 开发
  • sh的继任者
  • bash的前身
  • Bash是默认的Shell环境。
  • sh并不是默认的shell。
  • #!/bin/bash
  • #!/bin/sh
  • 通过升级后,它的功能得到了进一步的提升。
  • 它的功能相对较少。
  • 支持工作控制功能。
  • 不支持作业控制功能。
  • Bash并非一个有效的POSIXshell。
  • SH是一个有效的POSIXshell。
  • 易于使用
  • 并不像使用 `bash` 那样简单。
  • 比sh更不方便携带。
  • 比bash更便于携带。
  • 语言的扩展版本
  • 原始语言
  • Bash脚本编写,指的是专门为Bash语言设计的脚本编写方式。
  • Shell脚本编写实际上就是在任何shell环境中进行的脚本编写工作。
  • 支持命令历史记录功能。
  • 不支持命令历史记录功能。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料