web-dev-qa-db-ja.com

gitの自作インストールはシステムバージョン(/ usr / bin /内)よりも優先されません

OS X(またはXcode)はgit 1.7.somethingにバンドルされていますが、brew install git(1.8.0)の後、which gitは古い/usr/bin/gitを返し続けます。

これは、今$ PATHをエコーし​​たときに得られるものです。

/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin

自作のものを優先すべきではありませんか?

また、そのusr/local/git/binが最後にどこから来ているのかわかりません。

10
o_o_o--

とった。答えはあなたの質問にあります。 brewはgitを/usr/local/git/bin/usr/local/binではない)にインストールしますが、それはパスの/usr/binの後にあるので、最初にそれを取得します。 which -a gitに対する私のコメントは、あなたをこの方向に向けるべきでした。

7
Joe Bane

私もこの問題に遭遇しました。

Homebrewを介してgitをインストールした後、brew doctorを実行すると、Joeが前述したように、インストール場所が最初に来るため、システムが古いgitを実行していることを警告します。

しかし、同じ警告で、homebrewはそれを修正するためのコードを提供します:

$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
3
chorbs

PATHの先頭に~/binディレクトリを置くことは私のUnixの習慣の一部です。これは私の.bashrcの最初のビットの1つです。

case ":$PATH:" in
  *:$HOME/bin:*) ;;     # do nothing if $PATH already contains $HOME/bin
  *) PATH=$HOME/bin:$PATH ;;  # in every other case, add it to the front
esac

それが整ったら、Homebrewが管理するgitだけを選択的にシステムバージョンよりも優先させ(every Homebrewが管理するバイナリではなく)、シェルセッションだけを優先します(代わりに) of all GUIプログラムを含むどこからでも開始されるプログラムは、それをシンボリックリンクするのと同じくらい簡単です:

ln -s /usr/local/bin/git ~/bin/git
0