Which-2.21 と別の実現方法

which プログラムを LFS ブックに含めるべきかどうかは、メーリングリストにてかねてより議論されているところです。 過去には激しい議論だけに終わってしまった経緯もあります。 できればこの議論を終わりにしたいと考えています。 ここでは which を導入する2つの方法を示します。 どちらの方法を取るかは、みなさんが取り決めてください。

GNU Which の概要

1 つの方法は、GNU which パッケージをインストールするものです。

[注記]

注記

LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。

パッケージ情報

  • ダウンロード (HTTP): https://ftp.gnu.org/gnu/which/which-2.21.tar.gz

  • ダウンロード MD5 sum: 097ff1a324ae02e0a3b0369f07a7544a

  • ダウンロードサイズ: 148 KB

  • 必要ディスク容量: 1 MB

  • 概算ビルド時間: 0.1 SBU 以下

Which のインストール

以下のコマンドを実行して which をビルドします。

./configure --prefix=/usr &&
make

このパッケージにテストスイートはありません。

root ユーザーになって以下を実行します。

make install

パッケージ構成

インストールプログラム: which
インストールライブラリ: なし
インストールディレクトリ: なし

概略説明

which

PATH ディレクトリ内にインストールされている (シェル) コマンドのフルパスを表示します。

'which' スクリプト

もう 1 つの方法 (パッケージをインストールしたくない方) は、単純なスクリプトを作ります。 (これは root ユーザーになって実行します。)

cat > /usr/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/bin/which
chown -v root:root /usr/bin/which

このスクリプトはしっかりと動作しますので、目的を達するための最も簡単な方法と言うことができます。 ただし必ずしも分かりやすい実装というわけでもありません。