Mac版 path_helperはどの様に動作すべきか? (path_helper問題3)


過去、あるべきだった動作仕様

path_helperはどの様に動作すべきだったか?

(1) pathsの行を読み取り/use/local/binを先頭側にする
(2) paths.dのファイルの行を読み取りそれぞれを先頭側にする

「/usr/bin:/bin:/usr/sbin:/sbin」よりも(1) (2) は先頭に連結される。
(LinuxのPATH生成と同等の仕様)

あるべき動作仕様をみたせば、ユーザーの手間が省けた。

あるべき動作仕様をみたせば、ユーザーの手間が省け path_helper が高く評価されていたかもしれない。
具体的には、次のような良い評価がエンジニアから言われたかもしれない。

(3)Mac版path_helperはpaths.dのファイルを読み取って高速にPATH生成する。
(4)ターミナルを使用するエンドユーザーはexport PATHを追加分だけ最低限に書けば良い。
(ホームディレクトリの.zshenv .bash_profileなど)

pathsやpaths.dのBSD系UNIXシステムを考案したエンジニアの考えと同じかは分からないが、筆者は調べていて上記のように考えた。読者に押し付けるつもりは無い。

今後の未来において、Mac版path_helper仕様はどうあるべきか?

昔のLinux、UNIXのディレクトリ構成は固定されていなかったらしい。
現代では殆ど固定され変更がなさそうだ。
(5)「path_helperのpathsを読み取りPATHに追加する」は廃止すべき。
替わりに、/etcファイルのどこかで
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
と一行だけ書けば高速動作すると思われる。(参考ubuntu , Sparky Linux)

(6)path_helperはpaths.dのファイルを読み取ってPATH生成することは残すべきだろう。

(7)検討や洗い出しを全くしておらず案だけを書く。
configure --prefixでディレクトリを決めた時に、
LDFLAGS、CPPFLAGS、PKG_CONFIG_PATHもディレクトリであることが殆どで各ソフトウェア毎に一つに決まることが多い。
「path_helperのpaths.dのファイルを読み取りPATHに追加する」
path_helperはLDFLAGS、CPPFLAGS、PKG_CONFIG_PATHもPATH生成できたほうがいい。
ユーザーがLDFLAGS、CPPFLAGS、PKG_CONFIG_PATH管理せずに済む。

(8)Linuxに近いことが望ましい。

筆者が調べた所、Mac版10.9のzshのvim(8.2.1471)からターミナルを呼び出すか又は(:terminal)とGNUscreen(4.08.00 05-Feb-20)は起動すると/etc/zshenvのPATH設定(/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin)だけを返す。unsetopt GLOBAL_RCS や setopt no_global_rcsの設定はコメントアウトした状態だ。
ホームディレクトリの .zshenv .zshrc等々を読み込まず結果として「ユーザー追加のPATH設定を無視」してしまう。
ホームディレクトリの .zshenv .zshrcのPATH設定を追加するにはsourceするか自分でPATH追加が必要だ。
これらはバグでは無いが、やや使いにくい。
クライアントだからこれで良いだろうが、サーバー側ではもっとlinux寄りか高度でないとダメだろう。

Linux版だと、vimとscreenの起動時のPATH設定値はホームディレクトリの.zprofile .zshenv .bash_profile .bashrc等「ユーザーが追加した最終的なPATH設定値と同じ」である。

以上、path_helper問題の記事、終了。