Bash 软件包包含 Bourne-Again SHell。
首先,修复使用多个处理器核心构建时的竞争条件:
sed -i '/^bashline.o:.*shmbchar.h/a bashline.o: ${DEFDIR}/builtext.h' Makefile.in
准备编译 Bash:
./configure --prefix=/usr \ --docdir=/usr/share/doc/bash-5.1 \ --without-bash-malloc \ --with-installed-readline
配置选项的含义:
--with-installed-readline
该选项告诉 Bash 使用系统中已经安装的 readline
库,而不是它自己的 readline 版本。
编译该软件包:
make
如果不运行测试套件,跳到 “安装该软件包”。
为了准备进行测试,确保 tester
用户可以写入源代码目录:
chown -Rv tester .
现在以 tester
用户的身份运行测试:
su tester << EOF PATH=$PATH make tests < $(tty) EOF
安装该软件包,并把主要的可执行文件移动到 /bin
:
make install mv -vf /usr/bin/bash /bin
执行新编译的 bash 程序 (替换当前正在执行的版本):
exec /bin/bash --login +h
上面使用的参数使得 bash 进程是一个可交互的登录 shell,并且仍然禁用散列功能,这样新程序一旦可用就会被找到。