为什么是bash

为什么要介绍 bash,而不是别的 shell ?因为 bash 无处不在。它未必是最时髦的,可以说也不是最炫或最厉害的(就算不是,也差不多了),更不是唯一一个作为开源软件发布的 shell,但 bash 的大名尽人皆知。

究其原因,和历史发展有关。第一批 shell 算得上相当不错的编程工具,但不便于日常使用。C shell 中加入了大量的用户便利功能(例如,可以重复用户输入过的命令),但作为编程语言,它又太诡异了。接下来的 ksh(20 世纪 80 年代初期)也没少为用户提供方便,同时还改善了编程语言,看上去已经走在了被广泛接纳的康庄大道上。但 ksh 并非开源软件,作为一款专有软件,它很难被纳入 Linux 这种自由操作系统。(ksh 在 2000 年修改了其许可证,后来又在 2005 年再次改动。)

到了 20 世纪 80 年代后期,Unix 社区认为标准化是一种不错的做法,同时成立了 POSIX 工作组(由 IEEE 负责组织)。POSIX 实现了 Unix 库和实用工具的标准化,其中也包括 shell。标准 shell 主要基于 1988 年版的 ksh,另外还包括部分 C shell 特性以及一些用于弥补不足的新功能。GNU 项目旨在创建一款彻头彻尾的 POSIX 系统,这个系统自然需要一个 POSIX shell,bash 最初正是该项目的一部分。

bash 提供了 shell 程序员所需要的编程特性和命令行用户喜爱的各种便利。它一开始打算作为 ksh 的替代品,但随着自由软件运动变得愈发重要,Linux 越来越流行,bash 的风头很快就盖过了 ksh。

bash 也因此成了我们已知的所有 Linux 发行版以及 macOS(包括早期的 OS X 版本)的默认 shell(Linux 发行版的数量有数百种之多,可能会有一些没有默认使用 bash)。包括 BSD Unix 和 Solaris 在内的其他 Unix 操作系统也可以使用 bash。如果碰到操作系统中没有 bash 的罕见情况,安装起来也很容易。通过 Cygwin 以及新的 Linux 子系统(Ubuntu),bash 甚至可用于 Windows。bash 既是一门强大的编程语言,也是一种优秀的用户界面。它让你在获得复杂编程特性的同时,能够保持键盘输入的便捷性。

学习 bash 准没错。最常见的默认 shell 就是古老的 Bourne shell 和 bash,后者基本上兼容前者。任何现代的主流 Unix 或类 Unix 操作系统肯定安装了其一。但正如前面所说,万一没有的话,你也可以自己动手安装。当然,还有其他种类的 shell。秉承自由软件的精神,所有 shell 的创建者及维护人员都彼此分享观点。要是读过 bash 的变动日志,你就会发现很多地方提到,为了符合其他 shell 的行为而引入或调整了某项特性。不过多数用户并不在意。有什么功能,他们就用什么功能,并乐在其中。要是感兴趣,你可以研究一下其他 shell。不错的选择还有很多,也许你会找到更喜欢的,尽管可能不如 bash 这样普及。

赞(0)

评论 抢沙发

评论前必须登录!