Bash 软件包包含 Bourne-Again Shell。
准备编译 Bash:
./configure --prefix=/usr \ --without-bash-malloc \ --with-installed-readline \ bash_cv_strtold_broken=no \ --docdir=/usr/share/doc/bash-5.2.32
新的配置选项的含义:
--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