Linux 中 sh 和 Bash 的区别?


Bash 是 BourNeSh(Bourne Again ShEl)的缩写,它是原始 Bourne shell 的改进版本。它用于在 Bash 编程语言中运行程序,通常被称为 Linux 发行版的“默认 shell”。Sh 是 UNIX System V Release 4.0 的一个简单的命令解释器。Bash 和 sh 都可以用来编写各种语言的脚本,例如 Perl、Python、Ruby、PHP、Java、C++、JavaScript、Tcl、SQL 等。

sh

#!/bin/sh

bash

#!/bin/bash

注意

  • Shell 是最终用户和操作系统之间的接口。

  • sh 实现 shell 命令行解释器。

  • bash 是 sh 的超集。

Sh

Bash 也被称为 Bourne shell。sh 是由 POSIX 标准描述的命令行 shell 程序。它可以在 Linux、Mac OS X 和基于 BSD Unix 的操作系统上运行。有许多不同的方法来实现它。在大多数操作系统(包括 Linux)上,sh 由称为“shell”的程序实现,例如 bash、zsh 和 csh。Bash 是一个 shell 脚本解释器。/bin/sh 链接到其主要实现。符号链接是一个指向另一个文件的文件。

sh 本身不是一种计算机编程语言。sh 是 shell 编程语言的语法和语义的详细规范。它不包含任何代码。sh 是大多数现代 Linux 发行版中内置的 shell。

我们可以使用 sh,因为它与多个操作系统兼容。即使 bash 与 sh 不向后兼容,Bash 脚本通常也能正常工作,如果它们也是为 bash 编写的。sh 是 POSIX/UNIX/LINUX 操作系统平台上使用最广泛的脚本语言。sh 的一个好处是它存在于每个 Unix 系统上。

bash

Bash 也是一种类似于 sh 的命令编程语言。Bash 现在是基于 Linux 的操作系统上的默认用户登录 shell。Bash 是 GNU 为 Bourne sh shell 提供的替代方案的 sh 命令行解释器的扩展版本。

我们也可以说 bash 也是一种编程语言。我们可以在交互式会话中启动 Python,它的行为就像命令行界面 (CLI),但我们也可以从任何文本编辑器中执行 Python 脚本。

bash 是 sh 的超集。这意味着 bash 支持 sh 的功能并添加了其他功能。尽管大多数命令的工作方式与 sh 相同,但 bash 不是一个符合 POSix 的命令行解释器。它是 POSIX 命令行接口的一个方言(一个子集)。Bash 可以在一个交互式终端中运行并允许用户执行命令。它拥有 Bourne-Again SHell 系列语言中最好的功能集,包括文件重定向、进程替换、环境变量扩展、历史扩展、算术评估、命令分组等等。

像 GNU 软件(例如提供其他 shell 的 GNU coreutils,包括 csh、Bourne Again SHell 的实现)一样,Bourne Again SHell 是标准的 Unix shell。Bourne Again SHell 旨在与原始的 AT&T UNIX System V Release 4.0 BSD 操作系统兼容。与其他 GNU 一样,Bourne Again SHell 被开发为可在多个平台上移植。这意味着它可以在运行相应操作系统的任何计算机上运行。

sh 和 bash 的区别

 bash sh
Bourne Again SHell SHell
#!/bin/bash #!/bin/sh
由 Brain Fox 开发 由 Stephen R. Bourne 开发
sh 的继任者 bash 的前身
bash 是默认的 SHELL sh 不是默认的 SHELL
支持作业控制。 不支持作业控制。
bash 不是有效的 POSIX shell。 sh 是有效的 POSIX shell
Bash 脚本是专门为 Bash 编写的脚本 Shell 脚本是在任何 shell 中编写的脚本
支持命令历史记录。 不支持命令历史记录。

结论

在本教程中,我们看到了 sh 和 Bash 命令在 Linux 中的一些主要区别。

更新于: 2022-12-01

15K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告