A instalação homebrew do git não terá precedência sobre a versão do sistema (em /usr/bin/)

A instalação homebrew do git não terá precedência sobre a versão do sistema (em /usr/bin/)

OS X (ou Xcode) vem com o git 1.7.something, mas depois brew install git(1.8.0), which gitcontinua retornando o antigo /usr/bin/git.

Isto é o que recebo quando faço eco de $PATH agora:

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

As coisas do Homebrew não deveriam ter precedência?

Além disso, não tenho ideia de onde isso usr/local/git/binvem no final.

Responder1

Entendi. A resposta está na sua pergunta; brew instala o git em /usr/local/git/bin(não /usr/local/bin), mas como isso acontece /usr/binno seu caminho, você o obtém primeiro. Meu comentário which -a gitdeveria ter apontado você nessa direção.

Responder2

Eu também encontrei esse problema.

Depois de instalar o git através do homebrew, se você executar brew doctorele irá avisar que, como Joe mencionou acima, o sistema está rodando o git antigo porque seu local de instalação vem primeiro.

Mas, no mesmo aviso, o homebrew fornece o código para consertar:

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

Responder3

Faz parte dos meus hábitos Unix ter um ~/bindiretório que coloco no início do meu arquivo PATH. Este é um dos primeiros bits do meu .bashrc:

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

Com isso em vigor, fazer com que apenas o gerenciado pelo Homebrew gittenha precedência sobre a versão do sistema (em vez detodoBinário gerenciado pelo Homebrew) e apenas para suas sessões de shell (em vez detodosprogramas iniciados de qualquer lugar, incluindo programas GUI), é tão simples quanto criar um link simbólico:

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

informação relacionada