ビルド専用のシェルプロファイルを書いていてふと思ったのでつらつらと。
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 を使って気づいた(遅