🌵

パスを通すときに使う`:$PATH`とは

2022/10/25に公開
~/.zshrc
export PATH="$PATH:/path/to/foo"
export PATH="/path/to/bar:$PATH"

パスを通すときにこんな書き方をすると思うんですが $PATH が右側に書いてあったり左側に書いてあったりするのはなんでだろうとずっと思っててやっと謎が解けたので共有します


もともと環境変数の PATH にはパスが通っているディレクトリが : 区切りで入ってます

$ echo $PATH
=>
/usr/local/bin:/usr/sbin:/usr/bin...

そこに新しいパスを追加するときに冒頭のコマンドのように書くと $PATH が展開され、パスの最初か最後に追記されます。

export PATH="$PATH:/path/to/foo"
=>
export PATH="/usr/local/bin:/usr/sbin:/usr/bin:/path/to/foo"

or

export PATH="/path/to/foo:$PATH"
=>
export PATH="/path/to/foo:/usr/local/bin:/usr/sbin:/usr/bin"

つまり追加するパスの優先順位を高くしたい場合は後者のように書く必要があります


いつもおまじないのように書いていたけどやっと意味がわかってスッキリしました。
nodeのバージョン管理をasdfでやっているのになぜかhomebrewのnodeが実行されてて放置してたんですがこれでやっと解決できてよかった。

(参考)
https://kinacom.hatenablog.jp/entry/2016/06/29/180854

Discussion