Насколько я понимаю, brew
ничего такого не /usr/local/bin
противоречит (имеет то же имя, что и) распределенный исполняемый файл Apple. Таким образом, наличие /usr/local/bin
в пути ранее /bin
и /usr/bin
не должно быть проблемой, потому что не должно быть никаких конфликтов имен. * Однако, смотрите проблемы с ls
и tar
, и с использованием других агрегаторов пакетов, таких как fink
и port
(MacPorts), ниже.
Brew
делает одну из двух известных мне вещей, которые помогают управлять конфликтами имен:
Brew
оставляет несвязанные кеги в подвале. Чтобы установить материал, brew оставляет инструменты там, где они есть, и создает символические ссылки на эти инструменты в /usr/local/bin
. Для инструментов, которые brew
не хотят столкновения имен, они не создают символическую ссылку.
- Для многих , если не все стандартных инструментов , которые также
/bin
и /usr/bin
, brew
префиксы ссылки в /usr/local/bin
с «г», так, например, чтобы выполнить 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) имеют намного больше поддерживаемых пакетов в настоящее время, что мне нужно сейчас . Например, я могу получить 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
проблемы!