Насколько я понимаю, brew
не помещает в /usr/local/bin
ничего, что сталкивалось бы (имеет такое же имя) с распределенным исполняемым файлом Apple. Следовательно, наличие /usr/local/bin
в пути до /bin
и /usr/bin
не должно быть проблемой, потому что не должно быть столкновений имен. *Как бы то ни было, посмотрите проблемы с ls
и tar
, а также с использованием других агрегаторов пакетов, таких как fink
и port
(MacPorts), ниже.
Brew
делает одну из двух вещей, которые, как я знаю, помогают управлять столкновениями имен:
Brew
оставляет несвязанные бочки в подвале. Чтобы установить вещи, варите оставляет инструменты там, где они есть, и создает символические ссылки на эти инструменты в /usr/local/bin
. Для инструментов, с которыми brew
не хочет коллизии имен, он не создает символическую ссылку.
- Для многих, если не всех стандартных утилит, которые также есть в
/bin
и /usr/bin
, brew
префикс ссылки в /usr/local/bin
содержит “g”, так что, например, чтобы выполнить ls
с версией для варки, используйте gls
. Просто сделайте ls -l
в /usr/local/bin
и ищите связанные файлы - это те brew
, которые туда помещены. Замечание: Установленные утилиты brew
, которые должны быть доступны под их реальными именами, находятся в /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
я не ставлю /usr/local/bin
в свой путь по двум причинам - эти причины находятся в нижней части моего ответа.
Для оценки столкновений имен в вашей системе используйте brew doctor
и посмотрите на этот раздел - вот результат brew doctor
, представляющий интерес:
Warning: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:
ctags
emacs
emacsclient
etags
ex
git
git-cvsserver
git-receive-pack
git-shell
git-upload-archive
git-upload-pack
rview
rvim
view
vim
vimdiff
vimtutor
xxd
Consider setting your PATH so that /usr/local/bin
occurs before /usr/bin. Here is a one-liner:
echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
Причина, по которой я не ставлю инструменты brew
на первое место, на самом деле, вовсе нет, заключается в том, что команды brew
, установленные в ls
и tar
, не обрабатывают файловую систему ACL должным образом, на самом деле, в последний раз, когда я проверял (это было на прошлой неделе), они не обрабатывались вообще. Это большая проблема, и чтобы ее полностью избежать, вместе с сопутствующей проблемой конфигурации страницы man
, которая тегируется вместе с установкой $PATH
правильно, я поставлю инструменты, связанные с OSX
, особенно те, которые находятся в /bin
и /usr/bin
, в первую очередь.
Другой причиной, по которой я вообще не ставлю /usr/local/bin
, является то, что brew
плохо играет с другими, а fink
и port
(MacPorts) в настоящее время имеют гораздо больше поддерживаемых пакетов, которые мне нужны NOW. Например, я могу получить gnome-terminal
с fink
, но было бы очень сложно построить формулу и сделать то же самое с brew
. Итак, я сохраняю /sw
и /opt
в своем поиске $PATH
(для fink
и port
соответственно) и ссылаюсь на то, что мне нужно от /usr/local/bin
, включая gnat
, либо прописанные, либо использующие bash
и alias
, либо исходный файл setup
для совершенно другой среды, когда пишу код Ada
.
Дело в том, что это действительно зависит от того, чего вы хотите и в чем нуждаетесь в данный момент.
Вот пример проблемы ACL, о которой я упоминал выше.
С стандартными OSX
инструментов:
$ /bin/ls -le /var/root | head -7
total 24
drwx------+ 3 root wheel 102 May 28 2013 Desktop
0: group:everyone deny delete
1: user:_spotlight inherited allow list,search,readattr,readextattr,readsecurity,file_inherit,directory_inherit
drwx------+ 6 root wheel 204 Sep 19 14:22 Documents
0: group:everyone deny delete
1: user:_spotlight inherited allow list,search,readattr,readextattr,readsecurity,file_inherit,directory_inherit
и с brew
установленных инструментов:
$ /usr/local/bin/gls -le /var/root
/usr/local/bin/gls: invalid option -- 'e'
Try '/usr/local/bin/gls --help' for more information.
и
$ /usr/local/bin/gls --help | grep -i acl
Вы получите аналогичные результаты с tar
и я не знаю дома много других brew
инструментов, но кто может позволить себе иметь что-то сломать 6 месяцев вниз по дороге из-за ACL
проблемы!