Da quanto ho capito, brew non mette nulla in /usr/local/bin che collida (ha lo stesso nome di) un eseguibile distribuito da Apple. Quindi, avere /usr/local/bin nel percorso prima di /bin e /usr/bin non dovrebbe essere un problema, perché non dovrebbero esserci collisioni di nomi. *Comunque, vedi i problemi con ls e tar, e l'uso di altri aggregatori di pacchetti come fink e port (MacPorts), più avanti.
Brew fa una delle due cose che conosco che aiutano a gestire le collisioni dei nomi:
Brew lascia i fusti non collegati in cantina. Per installare roba, brew lascia gli strumenti dove sono, e crea collegamenti simbolici a quegli strumenti in /usr/local/bin. Per gli strumenti con cui brew non vuole una collisione di nome, non crea un link simbolico.
- Per molti, se non tutti i tool standard che sono anche in
/bin e /usr/bin, brew fa precedere il link in /usr/local/bin da una “g”, così per esempio, per eseguire un ls con una versione brew, usa gls. Fai semplicemente un ls -l in /usr/local/bin e cerca i file collegati - sono quelli che brew ha messo lì. Nota: Gli strumenti installati da brew che devono essere accessibili con i loro veri nomi si trovano in /usr/local/Cellar/coreutils/8.21/libexec/gnubin.
Non metto /usr/local/bin nel mio percorso per due ragioni - queste ragioni sono in fondo alla mia risposta.
Per valutare le collisioni di nomi nel tuo sistema, usa brew doctor e cerca questa sezione - Ecco l'output di brew doctor di interesse:
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
La ragione per cui non metto gli strumenti di brew per primi, anzi, per niente, è che i comandi brew installati ls e tar non gestiscono correttamente l'ACL del filesystem, infatti, l'ultima volta che ho controllato (che era la settimana scorsa), non venivano gestiti affatto. Questo è un GROSSO problema, e per evitarlo del tutto, insieme al problema associato alla configurazione della pagina man che accompagna l'impostazione corretta di $PATH, mi assicuro di mettere gli strumenti relativi a OSX, specialmente quelli che si trovano in /bin e /usr/bin, per primi.
Un'altra ragione per cui non metto affatto /usr/local/bin nel mio percorso è che brew non gioca bene con altri, e fink e port (MacPorts) hanno molti più pacchetti supportati al momento di cui ho bisogno NOW. Per esempio, posso ottenere gnome-terminal con fink, ma sarebbe un grande sforzo costruire una formula e fare lo stesso con brew. Così, tengo /sw e /opt nella mia ricerca $PATH (per fink e port, rispettivamente) e faccio riferimento alle cose che mi servono da /usr/local/bin, incluso gnat, o lo spelling, o uso bash alias‘s, o faccio il source di un file setup per un ambiente completamente diverso quando scrivo codice Ada.
Il fatto è che dipende davvero da quello che vuoi e di cui hai bisogno in quel momento.
Ecco un esempio del problema ACL che ho menzionato sopra.
Con gli strumenti standard 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
e con gli strumenti installati brew:
$ /usr/local/bin/gls -le /var/root
/usr/local/bin/gls: invalid option -- 'e'
Try '/usr/local/bin/gls --help' for more information.
e
$ /usr/local/bin/gls --help | grep -i acl
Otterrai risultati simili con tar e non conosco a casa molti altri strumenti brew, ma chi può permettersi che qualcosa si rompa 6 mesi dopo per un problema ACL!