読者です 読者をやめる 読者になる 読者になる

😃 mattintosh note 📝

Hello Raspberry Pi!

bash で PATH が伸びるアレ

bash Mac OS X

ビルド専用のシェルプロファイルを書いていてふと思ったのでつらつらと。

Mac で bash 使ってた頃、

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

みたいな感じで書いてた(MacPorts 使っている場合の例)んだけど、これで echo すると…

/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

になる。だけど source コマンドとかでプロファイルを再読みしたり再ログインすると…

/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

になる。bash を覚え始めたときは「bash のバグだ〜」なんて記事を見かけたような気がして(?)、あまり気にしてなかったけど考えてみたら当たり前の挙動だった。

だって $PATH って書いてるもんね………。

もしパスを自分で管理するなら、

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PATH

と書けば1行目でパスを初期化しているのでパスは伸びない。行数は増えるけどコロンで繋げる手間も省ける。

あとは /etc/paths とか /etc/paths.d に書いておいて /usr/libexec/path_helper を実行するようにするとかかね。


と、久しぶりに bash を使って気づいた(遅