Домашняя установка git не будет иметь приоритета над системной версией (в /usr/bin/)

Домашняя установка 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взялось в конце.

решение1

Понял. Ответ в твоем вопросе; brew устанавливает git в /usr/local/git/bin(не /usr/local/bin), но поскольку он находится после /usr/binв твоем пути, ты устанавливаешь его первым. Мой комментарий which -a gitдолжен был направить тебя в этом направлении.

решение2

Я тоже столкнулся с этой проблемой.

После установки git через homebrew, если вы запустите brew doctorего, он предупредит вас, что, как Джо упомянул выше, система использует старый git, поскольку его место установки указано первым.

Но в том же предупреждении homebrew приводит код для исправления:

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

решение3

Это часть моих привычек в Unix — иметь ~/binкаталог, который я помещаю в начало моего PATH. Это один из первых фрагментов в моем .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

При этом можно выборочно сделать так, чтобы только версия, управляемая Homebrew, gitимела приоритет над системной версией (вместокаждыйуправляемый Homebrew двоичный файл) и просто для ваших сеансов оболочки (вместовсепрограммы, запускаемые откуда угодно, включая программы с графическим интерфейсом), так же просто, как создать на них символическую ссылку:

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

Связанный контент