bash shell脚本编程经典实例(第2版)
上QQ阅读APP看书,第一时间看更新

1.13 获取Linux版的bash

1.13.1 问题

你想要获取 Linux 系统下的 bash,或确认已安装的 bash 是否为最新版。

1.13.2 解决方案

几乎所有的现代 Linux 发行版都包含了 bash。可以用发行版自带的打包工具来确认安装的是否为最新版。要想升级或安装应用程序,你必须是 root 身份、使用 sudo,或知道 root 密码。

有些 Linux 发行版(尤其是 Debian 家族)用 Debian Almquist shell 或 dash 作为 /bin/sh2,因为这两种 shell 更为小巧,而且运行速度比 bash 更快。对于那些假定 /bin/sh 指向 bash 的脚本,这种切换会造成很严重的混乱,因为凡是用到 bash 特性的地方全都会失效。更多细节参见 15.3 节。

2在这类发行版中,/bin/sh 是指向 Debian Almquist shell 或 dash 的符号链接。——译者注

对于 Debian 及其衍生出的系统(如 Ubuntu 和 Linux Mint),可以使用图形用户界面工具或命令行工具(如 apt-get、aptitude、apt)来确定 bash 的安装情况:

apt-get update && apt-get install bash bash-completion bash-doc

对于包括 Fedora、Community OS(CentOS)、Red Hat Enterprise Linux(RHEL)在内的 Red Hat 发行版,可以使用图形用户界面的 Add/Remove Application 工具。如果只有命令行,则可以使用下列命令:

yum update bash

对于 SUSE,可以使用 YaST 的图形用户界面或终端版本。你也可以使用命令行工具 rpm。

1.13.3 讨论

我们不可能涵盖所有的 Linux 发行版,甚至连主流发行版都很难全部讲到,因为它们的发展速度实在是太快了。好在这方面的多数发展是为了提高易用性,搞明白如何在所选用的发行版上安装软件应该不是难事。

如果用的是 LiveCD,鉴于其所采用的只读介质,软件更新和安装基本上不可能成功。如果这种发行版安装到了硬盘上,那么应该可以更新。

要是不确定特定 Linux 发行版中安装的是哪个版本的 bash,可以到 DistroWatch 网站上搜索该发行版并查询相关的软件包表格。例如,DistroWatch 网站中显示了表 1-1 中的内容。

表1-1:Linux Mint中的bash版本

软件包

18 sarah

17.3 rosa

16 petra

15 olivia

14 nadia

13 maya

12 lisa

11 katya

10 julia

……

bash (4.4)

4.3

4.3

4.2

4.2

4.2

4.2

4.2

4.2

4.1

……

1.13.4 参考

  • Debian 说明文档
  • Wikipedia 中的 Almquist shell 页面和 Ubuntu Wiki 中的 DashAsBinSh 页面
  • Fedora Project Wiki 中的 EPEL 页面
  • SuSE 文档
  • OpenSuSE 文档
  • 1.11 节
  • 1.12 节