📜  sh 和 bash 的区别

📅  最后修改于: 2022-05-13 01:57:01.734000             🧑  作者: Mango

sh 和 bash 的区别

bash 和 sh 是 Unix 操作系统的两个不同的 shell。 bash 是 sh,但具有更多功能和更好的语法。 Bash 是“Bourne Again SHell”,是对 sh(原始 Bourne shell)的改进。 Shell 脚本是在任何 shell 中编写脚本,而 Bash 脚本是专门为 Bash 编写的脚本。 sh 是 Unix/类 Unix 操作系统的 shell 命令行解释器。 sh 提供了一些内置命令。 bash 是 sh 的超集。 Shell 是用于运行命令和 shell 脚本的命令行界面。 Shell 有多种风格,就像操作系统有多种风格一样。因此,Shell 是用户与操作系统之间的接口,它帮助用户与设备进行交互。

嘘:

#!/bin/sh

重击:

#!/bin/bash

笔记:

  • Shell 是用户和操作系统之间的接口。
  • sh 实现了外壳接口。
  • bash 是 sh 的超集。

嘘:

sh 也称为 Bourne Shell。 sh 是 POSIX 标准描述的命令编程语言。它适用于 UNIX 或类 UNIX 操作系统。它有很多实现。在大多数操作系统上,sh 由 dash、kash 和原始 Bourne Shell 等程序实现。 sh 是 bash 的前身。 /bin/sh 是主要实现的实际链接。它是大多数 POSIX 系统中的符号链接。

sh 本身不是一种编程语言。这只是一个规范。 sh 是该语言的语法和语义的详细描述。它不包括实现。 sh 是作为早期 UNIX shell 的替代品而编写的。它的大部分语法与 ALGOL68 编程语言的语法相同。

如果我们希望我们的语言与多个系统兼容,我们应该使用 sh。 sh 脚本最喜欢在 bash 上运行,也无需修改,因为 bash 向后兼容 sh。 sh 是适用于大多数 POSIX/Unix/Linux 系统的最便携的脚本语言。 sh 的一个优点是它可以保证存在于所有声称是 Unix 系统的东西上。

重击:

bash 也是一种类似于 sh 的命令编程语言。如今,bash 是大多数基于 Linux 的操作系统上的默认登录 shell。它是 sh 系统的扩展版本,用于 GNU 替代 Bourne shell。我们也可以说 bash 是一种编程语言。在这里像Python一样思考,我们可以在交互模式下启动Python ,它的行为就像一个 shell,但我们也可以在任何 IDE 上运行Python程序。

bash 是 sh 的超集。这意味着 bash 支持 sh 的特性并提供比 sh 更多的功能。尽管大多数命令与 sh 做同样的事情。 bash 不是 POSIX 兼容的外壳。它是 POSIX shell 语言的一种方言。 Bash 可以在文本窗口中运行,并允许用户解释命令以执行各种任务。它具有 Korn 和 C shell 的最佳和最有用的特性,例如目录操作、作业控制、别名等等。

与 GNU 软件 bash 提供的其他 shell 一样,包括一个版本的 csh,Bash 是默认的 shell。 bash 旨在成为 IEEE POSIX 规范(IEEE 标准 1003.1)的 IEEE POSIX Shell 和工具部分的一致实现。与其他 GNU 一样,bash 也非常便携。这适用于任何在预期位置有 bash 的基于 Linux/Unix 的系统。 bash 在编程和交互使用方面比 sh 更实用。

sh 和 bash 之间的区别:

bash

sh     

  • Bourne Again SHell
  • SHell
  • Developed by Brain Fox
  • Developed by Stephen R. Bourne
  • Successor of sh
  • Predecessor of bash
  • bash is the default SHELL
  • sh is the not default SHELL
  • #!/bin/bash
  • #!/bin/sh
  • It has more Functionality with up-gradation.
  • It has less functionality.
  • supports job controls.
  • does not support job control.
  • bash is not a valid POSIX shell.
  • sh is a valid POSIX shell.
  • Easy to use
  • not as easy as bash
  • less portable than sh.
  • more portable than bash.
  • Extended version of language
  • Original language
  • Bash scripting is scripting specifically for Bash
  • Shell scripting is scripting in any shell
  • supports command history.
  • does not supports command history.