为什么 bash 是 Linux 上的标准?

Mil*_*kov 25 linux bash

大多数最新的 Linux 发行版都将 bash 作为默认 shell,尽管还有其他(可以说)更好的 shell 可用。

我试图了解这是否是一些没有人想要改变的历史遗留物,或者是否有一些充分的理由使 bash 成为首选?

bsd*_*bsd 24

简短的回答是因为 linux 确实是 GNU/Linux。只有内核是 linux,但提供类 Unix 环境的基本实用程序集合是由GNU提供的,而 GNU shell 是bash
正如我所说,这是简短的回答 ;)

编辑添加一些额外的评论......
让我先说我不是 Unix 历史学家,所以我只能回答恕我直言

几点,首先bash是shell的厨房水槽,就像emacs对于编辑器一样。
在 bash 发布时,没有免费的 ksh 实现,tcsh 是免费的 csh 替代品,但 Stallman 对 csh 进行 shell 编程大发雷霆。
作为交互式 shell,bash 具有出色的历史/命令调用能力,以及从会话到会话的历史保存。它是用于 shell 编程的 sh、bsh、ksh 的替代品,并且是一个不错的交互式 shell。
就像滚下坡的雪球一样,bash 获得了动力和规模。

是的,还有其他几十种贝壳;shell 更适合个人用途或口味,但对于一个人来说,shell bash 做得不错,并且在 20 多年来一直备受关注。

  • @MilanBabuškov Bash *必须* 安装,因为使用 bash 特定功能的脚本太多。一旦你从这个假设开始,你就必须证明额外的壳是合理的。Dash 被包含在像 Ubuntu 这样的 distos 中,作为减少启动时间计划的一部分。鉴于 bash 作为交互式 shell “足够好”,还没有其他 shell 提供足够强大的参数来成为默认包加载的一部分。 (3认同)

Gil*_*il' 12

Bash 有一些潜在的竞争对手:

  • Zsh有更先进的交互设施,但在脚本方面有一些怪癖(现在比以前少了)。在 1990 年代初到中期,Linux 还处于起步阶段,zsh 几乎无人知晓。
  • 自 1980 年代中期以来,Ksh是商业 unice 的事实上的标准,但直到 2000 年它才成为专有软件,因此不是 Linux 上的选项。此外,与 bash 相比,ksh 具有低于标准的命令行编辑功能。
  • Pdksh是 ksh 的免费克隆,本来是一个选项,但它并不广为人知,并且命令行编辑功能很差。(Pdksh 不再是一个非常活跃的项目,即使它仍然在一些 BSD 中使用,现在 ATT ksh 是免费的。)
  • 一些发行版将ash变体安装为/bin/sh. Ash(我的意思是任何一种称为 ash 的松散外壳家族)被设计成小而快,没有交互功能(它仅用于编辑脚本)。灰烬复兴相对较新;在 1990 年代,现有的变体缺乏很多功能。
  • 在 zsh 出现之前,Tcsh是最先进的交互式 shell,但它与 sh 不兼容,并且与 scripting 不太好

此外,bash 是官方的GNU shell,而 Linux 系统实际上是GNU/Linux:许多核心程序来自 GNU,即使最著名的部分 Linux 内核不是。在它成为事实上的标准时,bash 是众所周知的,拥有官方地位,并拥有一系列不错的功能。


Ben*_*tFX 6

最简单的答案?因为有些东西“必须是”默认的。最明智的默认设置是大多数用户已经习惯的默认设置。从这一点来看,Bash 是一个不错的选择。每个人都有选择自己世界中最好的自由。如果默认值始终满足他们的需要,大多数人会选择使用默认值。