私の理解では、brew
にはAppleの配布された実行ファイルと衝突する(同じ名前を持つ)ものは何も入っていません。したがって、/usr/local/bin
と /usr/local/bin
の前のパスに /bin
を入れても、名前の衝突はないはずなので、問題にはならないはずです。*けれども、/usr/bin
と ls
、そして tar
と fink
(MacPorts) のような他のパッケージアグリゲータを使用している場合の問題を、下記の方法で参照してください。
port
は、名前の衝突を管理するのに役立つ、私が知っている2つのことのうちの1つを行います。
- **
Brew
は、リンクされていない樽をセラーに残します。Brew
が名前の衝突を望まないツールについては、シンボリックリンクは作成されません。
- **
/usr/local/bin
とbrew
に含まれている標準ツールの多くは、/bin
のリンクの前に “g "を付けているため、例えばBrewバージョンで/usr/bin
を実行するにはbrew
を使用します。注意: 実名でアクセスしなければならない/usr/local/bin
のインストールされたツールは、ls
の中にあります。
私が gls
をパスに入れないのには、2つの理由があります。
お使いのシステムでの名前の衝突を評価するには、ls -l
を使用してこのセクションを探してください - ここには、興味のある /usr/local/bin
の出力があります。
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
と/usr/local/Cellar/coreutils/8.21/libexec/gnubin
コマンドがファイルシステムのACLを適切に処理していないからで、実際、私が最後にチェックした時(これは先週だった)には、全く処理されていませんでした。これは大きな問題であり、/usr/local/bin
を正しく設定することに伴う関連するbrew doctor
ページ設定の問題と一緒に、これを完全に回避するために、私はbrew doctor
関連ツール、特にbrew
とbrew
にあるものを最初に置くようにしています。
ls
をパスに入れないもう一つの理由は、tar
が他のものとの相性が良くないことと、man
と $PATH
(MacPorts) には、私が NOW を必要としているサポートされているパッケージの数がはるかに多いからです。例えば、OSX
で/bin
を得ることはできますが、/usr/bin
で同じことをするには計算式を構築するのが大変な労力になります。そこで、私は/usr/local/bin
とbrew
を検索fink
に入れておいて(それぞれport
とgnome-terminal
のために)、fink
を含めてbrew
から必要なものを参照しているのですが、/sw
のコードを書くときには、/opt
のものを綴ったり、$PATH
のものを使ったり、全く別の環境用のfink
ファイルをソースにしたりしています。
問題なのは、その時に何が必要で何をしたいのか、何が必要なのかにかかっているということです。
上に書いたACLの問題の例です。
標準のport
ツールを使用した場合:
$ /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
と/usr/local/bin
インストールされたツールを使用した場合:
$ /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
あなたはgnat
でも同じような結果を得ることができます。