Насколько я понимаю, 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проблемы!