kinalog

自称フロントエンドエンジニアが何か喚いています。

PATHをめぐる小話

でもいい加減Gitを業務に取り入れたいんだ...と思ってGitをインストールするところから始めていたわけなんですが、そこから始まった、PATHをめぐるお話の覚書です。
※発端はGitですがGitほぼ関係ない話です。

HomebrewでGitをインストール

インストール前に、一応既にGitが入っていないか確認。

$ git --version
git version 2.7.4 (Apple Git-66)

あ...れ...?インストールした記憶もないのに既にgitが入ってる。
なんで?と思ったら、どうやらXcodeのCommand Line Toolsに同梱されていたようで。
ただバージョンがちょっと古い。せっかくだから最新版入れときたいし、パッケージ管理は全部Homebrewでやっときたい。

既に入ってるGitをアンインストールできないかなあと思って調べてたけど、別にアンインストールしなくてもそのままHomebrewでインストールすれば良さそう。

qiita.com

ということで

$ brew install git

これでインストール完了。
再びバージョンチェックをしてみたところ

$ git --version
git version 2.7.4 (Apple Git-66)

変わってない......。
whichしてみると、

$ which git
/usr/bin/git

Homebrew使ってインストールすると、/usr/local/bin以下に格納されるはずなので、古い方のgitにパスが通っちゃってる状態の模様。
さっきのページを見ると

PATHの優先度負けしている可能性があるので、一番最初に/usr/local/binを読み込むように修正してあげるとよさそうです。

っていうことらしい。

パスの優先順位

ではパスの優先順位を上げるにはどうすればいいのか。答えは単純。.bash_profileに追記して、/usr/local/binにパスを通してあげれば良い。

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

これを反映して再びバージョン確認をすると、

$ git --version
git version 2.9.0

問題なく反映された。


ところで、上の一文って、一体何をしているんだろうとふと疑問に思った。

パス(PATH)の確認と設定方法は? - Pocketstudio.jp Linux Wiki

上記のサイトを参考にすると、

PATH=/usr/local/bin:$PATH
この部分で変数PATHに、「/usr/local/bin」というパスを追加。

それぞれのパスは「:」で区切り、前(左側)に書かれたパスが優先される。
上記部分は「変数PATHに『/usr/local/bin』を追加して、その後ろに環境変数$PATHを追加」っていう指示。

これを例えば
PATH=$PATH:/usr/local/bin
にしてしまうと、今定義されている$PATHが左側に来て優先されてしまうので、どこに$PATHを持ってくるかっていうのは重要かもしれない。

export
これを先頭につけることで、変数PATHの内容が環境変数として定義される。これをつけておかないと、いくらPATH=〜〜を変更しても設定は反映されない。



パスの優先順位を変更するもうひとつの方法としては、下記のページのように/etc/pathsを変更する方法がある。

qiita.com

こちらは至ってシンプルで、vim等で開いてみると

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

こんな感じでパスが並んでいるので、優先順位を上げたいものを上に持ってくればOK。
ただしこちらは同じMac内の全ユーザーに反映されてしまうようなので、複数ユーザーで使用している場合は避けたほうが良いかもしれない。