8.35. Bash-5.2.21

Bash は Bourne-Again Shell を提供します。

概算ビルド時間: 1.2 SBU
必要ディスク容量: 52 MB

8.35.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

configure オプションの意味

--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 というテストは、出力の第 1 行めが異なるということで、特定のホストディストリビューションでは失敗する場合があります。

パッケージをインストールします。

make install

新たにコンパイルした bash プログラムを実行します。(この時点までに実行されていたものが置き換えられます。)

exec /usr/bin/bash --login

8.35.2. Bash の構成

インストールプログラム: bash, bashbug, sh (bash へのリンク)
インストールディレクトリ: /usr/include/bash, /usr/lib/bash, /usr/share/doc/bash-5.2.21

概略説明

bash

広く活用されているコマンドインタープリター。 処理実行前には、指示されたコマンドラインをさまざまに展開したり置換したりします。 この機能があるからこそインタープリター機能を強力なものにしています。

bashbug

bash に関連したバグ報告を、標準書式で生成しメール送信することを補助するシェルスクリプトです。

sh

bash プログラムへのシンボリックリンク。 sh として起動された際には、かつてのバージョンである sh の起動時の動作と、出来るだけ同じになるように振舞います。 同時に POSIX 標準に適合するよう動作します。