8.36. Bash-5.2.21

Bash 软件包包含 Bourne-Again Shell。

估计构建时间: 1.2 SBU
需要硬盘空间: 52 MB

8.36.1. 安装 Bash

首先,修复上游发现的一些问题:

patch -Np1 -i ../bash-5.2.21-upstream_fixes-1.patch

准备编译 Bash:

./configure --prefix=/usr             \
            --without-bash-malloc     \
            --with-installed-readline \
            --docdir=/usr/share/doc/bash-5.2.21

新的配置选项的含义:

--with-installed-readline

该选项告诉 Bash 使用系统中已经安装的 readline 库,而不是它自己的 readline 版本。

编译该软件包:

make

如果不运行测试套件,直接跳到 安装该软件包

为了准备进行测试,确保 tester 用户可以写入源代码目录:

chown -R tester .

该软件包的测试套件被设计为以非 root 用户身份运行,且该用户必须是标准输入所连接的终端的所有者。为了满足这一条件,使用 Expect 生成一个新的伪终端,并以 tester 用户身份运行测试:

su -s /usr/bin/expect tester << "EOF"
set timeout -1
spawn make tests
expect eof
lassign [wait] _ _ _ value
exit $value
EOF

测试套件使用 diff 检测测试脚本输出和预期是否存在不同。diff 的任何输出 (以 <> 开头) 都表示测试失败,除非有消息提示可以忽略这里报告的差别。已知一项名为 run-builtins 的测试在一些宿主系统上可能失败,此时该测试输出的第一行和预期存在不同。

安装该软件包:

make install

执行新编译的 bash 程序 (替换当前正在执行的版本):

exec /usr/bin/bash --login

8.36.2. Bash 的内容

安装的程序: bash, bashbug, 以及 sh (到 bash 的链接)
安装的目录: /usr/include/bash, /usr/lib/bash, 和 /usr/share/doc/bash-5.2.21

简要描述

bash

一个广泛使用的命令解释器;它在执行命令前对命令行进行多种展开和替换操作,这些操作使得它成为强大的工具

bashbug

一个 shell 脚本,用于帮助用户按照电子邮件标准格式编写关于 bash 的 bug 报告

sh

一个指向 bash 程序的符号链接;当以 sh 命令运行时,bash 试图尽可能地模仿 sh 的历史版本,以符合 POSIX 标准