Pelo que entendi, brew
não coloca nada /usr/local/bin
que colide (tem o mesmo nome que) um executável distribuído da Apple. Portanto, ter /usr/local/bin
o caminho antes /bin
e /usr/bin
não deve ser um problema, porque não deve haver colisão de nomes. * No entanto, veja os problemas com ls
e tar
, e usando outros agregadores de pacotes como fink
e port
(MacPorts), bem abaixo.
Brew
faz uma das duas coisas que conheço que ajudam a gerenciar colisões de nomes:
Brew
deixa barris não ligados na adega. Para instalar coisas, o brew deixa as ferramentas onde estão e cria links simbólicos para essas ferramentas /usr/local/bin
. Para ferramentas que brew
não desejam colisão de nomes, não cria um link simbólico.
- Para muitas, se não todas as ferramentas padrão que também estão
/bin
e /usr/bin
, brew
prefixam o link /usr/local/bin
com um "g", por exemplo, para executar uma ls
versão com brew, use gls
. Basta fazer uma ls -l
no /usr/local/bin
e procurar os arquivos vinculados - esses são os brew
colocou lá. Nota: As brew
ferramentas instaladas que devem ser acessadas por seus nomes reais são encontradas em /usr/local/Cellar/coreutils/8.21/libexec/gnubin
.
Eu não coloco /usr/local/bin
no meu caminho por duas razões - essas razões estão na parte inferior da minha resposta.
Para avaliar as colisões de nomes em seu sistema, use brew doctor
e procure esta seção - Aqui está o brew doctor
resultado interessante:
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
A razão pela qual eu não coloco brew
as ferramentas em primeiro lugar, de fato, é que não, porque os comandos brew
instalados ls
e tar
não lidam com a ACL do sistema de arquivos de fato, na última vez que verifiquei (que foi na semana passada), eles não estavam ' t tratado de todo . Esse é um problema GRANDE e, para evitá-lo por completo, junto com o man
problema de configuração de página associado que marca junto com a configuração $PATH
correta, certifique-se de colocar as OSX
ferramentas relacionadas, especialmente as encontradas em /bin
e /usr/bin
, primeiro.
Outra razão que eu nem sequer colocar /usr/local/bin
no meu caminho em tudo é porque brew
não joga bem com os outros, e fink
e port
(MacPorts) têm forma mais pacotes no momento que eu preciso suportado EMPRESA . Por exemplo, eu posso começar gnome-terminal
com fink
, mas seria um grande esforço para construir uma fórmula e fazer o mesmo com brew
. Portanto, mantenho /sw
e /opt
em minha pesquisa $PATH
(por fink
e port
, respectivamente) e as referências de que preciso /usr/local/bin
, incluindo gnat
, por extenso ou uso bash
alias
, ou forneço um setup
arquivo para um ambiente totalmente diferente ao escrever Ada
código.
A questão é que realmente depende do que você deseja e precisa no momento.
Aqui está um exemplo do problema da ACL que mencionei acima.
Com as OSX
ferramentas padrão :
$ /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 com as brew
ferramentas instaladas:
$ /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
Você obterá resultados semelhantes tar
e eu não conheço muitas outras brew
ferramentas, mas quem pode se dar ao luxo de ter algo quebrado 6 meses depois por causa de um ACL
problema!