web-dev-qa-db-ja.com

OSXで独自のスクリプトをどこに保存しますか?

OS X用の一般的なことを行うbashスクリプトを作成するとき、それらを保持するのに適した場所はどこかと思います。それらをすべて自動的に取得する場所に配置できるディレクトリはありますか?または、独自のディレクトリを作成してから、このディレクトリを.profileなどから参照する必要がありますか?

57
More Than Five

PATHを次のように設定しています。

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
  • $HOME/bin

オーバーライドがデフォルトのコマンドであるコマンドには、/usr/local/binを使用します。たとえば、Subversion 1.7.7がインストールされており、OS Xには1.6.18が付属しています。 svnのバージョン1.7.7は/usr/local/binにありますが、svnのデフォルトの1.6.18バージョンは/usr/binにあります。 svnと入力すると、OS Xに付属するバージョンではなく、インストールしたバージョンが取得されます。Java、Git、Python、および別のバージョンが必要な他のいくつかのバイナリでこれを実行しました私のMacに来ました。これらのほとんどはシンボリックリンクです。例えば:

$ ls -l /usr/local/bin/ant
lrwxr-xr-x  1 root  wheel       16 Jun 12 11:01 ant -> /opt/ant/bin/ant

Ant 1.9.1は/opt/ant(実際には/opt/Apache-ant-1.9.1にインストールされますが、/opt/antにシンボリックにリンクされます)。 /opt/ant/binの下のすべてのものを/usr/local/binにリンクしたので、それは私のパスにあります。

個人用のシェルスクリプトやその他のスクリプトに$HOME/binを使用します。伝統的に、これをPATHの最後のエントリにするので、組み込みコマンドを誤ってオーバーライドすることはありません。 cpというシェルスクリプトコマンドを作成した場合、/bin/cpコマンドをオーバーライドしません。

17
David W.

自分で作成した実行可能ファイルとスクリプトには~/binを使用し、自分では作成しなかった実行可能ファイルとスクリプトには/usr/local/binを使用します。

/usr/local/binは、Homebrew、pip(およびHomebrewによってインストールされたgemおよびnpm)、make installのデフォルトのターゲット、および一部の.pkgインストーラー。

以前は、自分で作成したのではなく、デフォルトで/usr/local/binに配置されていなかった実行可能ファイルとスクリプト用に別のディレクトリを用意していました。しかし、ファイルが非常に少ないため、その中のすべてのファイルを/usr/local/binに移動しました。

/usr/local/binfind /usr/local/bin ! -lname '../Cellar/*'にHomebrew以外のものを見つけることができます。

/usr/local/binには既に約1000個の他のファイルが含まれており、/usr/local/bin(またはbin)を入力する方が簡単なので、私は自分で書いたスクリプトに~/binを使用しません。

setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin/etc/launchd.confに追加しました。他のディレクトリの前に/usr/local/binを置くことは潜在的に危険であり、たとえば一部のTextMateコマンドはそのために動作を停止しましたが、システムにインストールされたバージョンの前にコマンドの新しいバージョンを持ち、どこでも同じパスを使用することも便利です。

9
Lri