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でインストールすれば良さそう。
ということで
$ 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を変更する方法がある。
こちらは至ってシンプルで、vim等で開いてみると
/usr/bin /bin /usr/sbin /sbin /usr/local/bin
こんな感じでパスが並んでいるので、優先順位を上げたいものを上に持ってくればOK。
ただしこちらは同じMac内の全ユーザーに反映されてしまうようなので、複数ユーザーで使用している場合は避けたほうが良いかもしれない。