bash与sh有何具体差异?

2026-06-11 02:344阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计793个文字,预计阅读时间需要4分钟。

bash与sh有何具体差异?

什么是sh?

sh(或Shell命令语言)是一种由POSIX标准描述的编程语言。它有多种实现(如ksh88、Das等)。

什么是sh?sh(或Shell命令语言)是一种由POSIX标准描述的编程语言。它有许多实现(ksh88,Das 什么是sh?

sh(或 Shell 命令语言)是一种由POSIX 标准描述的编程语言。它有许多实现(ksh88,Dash,…)。Bash 也可以被认为是sh(见下文)的一种实现。

因为sh是规范,而不是实现,/bin/sh是大多数 POSIX 系统上实际实现的符号链接(或硬链接)。

什么是Bash?

Bash 最初是一个sh兼容的实现(尽管它比 POSIX 标准早了几年),但随着时间的推移,它已经获得了许多扩展。许多这些扩展可能会改变有效 POSIX shell 脚本的行为,因此 Bash 本身并不是一个有效的 POSIX shell。相反,它是 POSIX shell 语言的一种方言。

Bash 支持--posix开关,这使得它更符合 POSIX。如果调用为sh.

sh = bash?

很长一段时间以来,/bin/sh用于指向/bin/bash大多数 GNU/Linux 系统。因此,忽略两者之间的差异几乎是安全的。但这种情况最近开始发生变化。

/bin/sh一些没有指向/bin/bash(并且其中一些/bin/bash甚至可能不存在)的系统的流行示例是:

  • 现代 Debian 和 Ubuntu 系统,默认符号sh链接dash;
  • Busybox,它通常在 Linux 系统启动时作为initramfs. 它使用ash shell 实现。
  • BSD系统,通常是任何非 Linux 系统。OpenBSD使用的是KornShellpdksh的后代。
  • 阅读全文

    本文共计793个文字,预计阅读时间需要4分钟。

    bash与sh有何具体差异?

    什么是sh?

    sh(或Shell命令语言)是一种由POSIX标准描述的编程语言。它有多种实现(如ksh88、Das等)。

    什么是sh?sh(或Shell命令语言)是一种由POSIX标准描述的编程语言。它有许多实现(ksh88,Das 什么是sh?

    sh(或 Shell 命令语言)是一种由POSIX 标准描述的编程语言。它有许多实现(ksh88,Dash,…)。Bash 也可以被认为是sh(见下文)的一种实现。

    因为sh是规范,而不是实现,/bin/sh是大多数 POSIX 系统上实际实现的符号链接(或硬链接)。

    什么是Bash?

    Bash 最初是一个sh兼容的实现(尽管它比 POSIX 标准早了几年),但随着时间的推移,它已经获得了许多扩展。许多这些扩展可能会改变有效 POSIX shell 脚本的行为,因此 Bash 本身并不是一个有效的 POSIX shell。相反,它是 POSIX shell 语言的一种方言。

    Bash 支持--posix开关,这使得它更符合 POSIX。如果调用为sh.

    sh = bash?

    很长一段时间以来,/bin/sh用于指向/bin/bash大多数 GNU/Linux 系统。因此,忽略两者之间的差异几乎是安全的。但这种情况最近开始发生变化。

    /bin/sh一些没有指向/bin/bash(并且其中一些/bin/bash甚至可能不存在)的系统的流行示例是:

  • 现代 Debian 和 Ubuntu 系统,默认符号sh链接dash;
  • Busybox,它通常在 Linux 系统启动时作为initramfs. 它使用ash shell 实现。
  • BSD系统,通常是任何非 Linux 系统。OpenBSD使用的是KornShellpdksh的后代。
  • 阅读全文