Mac OS X:バイナリファイルが存在する従来の場所


61

コマンドラインアプリケーションであるアプリケーションをダウンロードし、パスを明示的に入力しなくてもコマンドラインから実行できる場所に配置したい。

  1. このようなものに使用される従来のパスは何ですか?/usr/bin?さまざまなオプションがあります。1つはすべてのユーザーに必要な場合、1つは特定のユーザー(管理者アカウントなど)にのみ必要な場合です。

  2. または、Applicationsディレクトリの下の独自のディレクトリに配置し、パスに追加する必要がありますか?その場合、どのファイルがパスの設定場所を制御しますか?

回答:


53

中心的な答え:あなたはおそらく欲しい/usr/local/bin。macOSの最新度によっては、デフォルトを更新する必要があります$PATH。詳細については、以下を参照してください。

更新201812月1日元の回答を書いてからある時点で、Appleはデフォルトを変更しました$PATH。その結果、私が以下で言うことの多くは、最近のMacとは無関係です。echo $PATHターミナルに入力し、/usr/local/bin最初に入力した場合、以下のすべてを無視しても問題ありません$PATH

元の答え

この点でMacは珍しいです。$PATH通常のユーザーのデフォルト変数は次のようになります。

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

との/usr/local/bin 後に 置く/usr/bin/bin、Macは通常のシステムを更新します。通常、何かを入れることができます/usr/local/bin(たとえば、非標準的な方法でコンパイルされた2番目のPerlインタープリター)。その後、通常のユーザーは最初にシステム全体のものではなく、カスタムのものをヒットします。これはいい。ユーザーはバリアントを取得できますが、システムは純粋なままです。Appleのデフォルトを考えると$PATH、しかし、内の項目/usr/binまたは/binに何も前に見つかってしまいます/usr/local/bin。(これは基本的に、インストールする目的を無効にし/usr/local/binます。例えば、カスタムPerlをインストールします。)

これを修正するには、ユーザーのホームディレクトリに$PATHある.profileファイルを編集して、通常のユーザーを変更します。(新規インストールの場合、そのファイルは存在しない可能性があります。その場合は作成してください。)

準関連:HomebrewはMacに優れたパッケージ管理を提供します。デフォルトでは、Homebrewはソフトウェアを/usr/localにインストールしますが、物を削除して後でバニラ状態に戻すことが非常に簡単になるようにインストールします。


1
新しくインストールしたOsX 10.13.6(High Sierra)では、デフォルトで最初に(フォルダーが存在しなくても)パスに/ usr / local / binが含まれています。
レゴラス

1
@Legolas Appleは、この処理方法を変更したようです。投稿を編集します。
テレマコス

9

/usr/local/binそして/usr/local/sbin、あなたのパスに追加することも価値がある、ソース用のmakefileの多くとそこにインストールするには、デフォルトで設定されて構築します。

あなたが使用している場合はMacPortsをし、それの価値を加えること/opt/local/bin/opt/local/sbin同様。

これを行う最良の方法は、追加することです

export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$PATH

.bashrc自分のホームディレクトリ内のファイルは、システムワイドのパスを変更したい場合は、に同じ行を追加し、(隠されているので、CLIは、これを行うためのための最善の方法である)、または/etc/bashrc(隠されていない)、しかし、あなたがしますsudoこれを行う必要があります。

あなたが持っていない場合は.bashrc任意のユーザのホームでは、あなたは「あなたの場合は、関連明らかに(ないものを作り、それに次の行を追加していますが、問題のユーザーがそれを読みやすくするために作成したファイルのアクセス権を変更することを忘れないことができますあなた自身のプロファイルのためにそれをやり直してください)。

$PATH最後には、あなたが前に置かれたあらゆるに、システムのデフォルトのパスを追加します。あなたがバイナリインストールした場合ので、与えられたパスの順序でバイナリが検索することを注意/usr/localまたは/opt/local、システムにデフォルトでインストールされ、インストールのバージョンが最初に発見される、ことができます(ただし、まれに)動揺事。注意する価値があります。

良い情報はこちらです。

上記では、シェルにBashを使用していると想定していることに注意してください。これは、Mac OS X v10.4(Tiger)およびMac OS X v10.5(Leopard)のデフォルトですが、tcsh代わりに使用される以前のシステムではありません。構文は異なります。

私はそれが役立つことを願っています...


1
/usr/local/bin既にデフォルトのOS Xにあります$PATH(遅すぎます-私の答えをご覧ください)。MacPortsを使用する場合、そのインストーラーは必要に応じてパスを編集する必要があります-少なくとも私の経験では常にそうです。とはいえ、ユーザーが何をしているのか(そしてなぜ)知っているのは良いことです。
テレマコス

@Telemachusをよく見つけました:自分でMacを構築するときはいつでも、私は地獄を最初にカスタマイズします。
avstrallen

1
.profileのパスをカスタマイズするMacPortsインストーラーについてあなたが何を言っているのか知っていますが、過去に何らかの理由で、何がわからないのか、これが固執できなかったことがあります!かなり長い間)...ので、それ以来、私は手で...でそれを配線する傾向がある
avstrallen

「これは隠されているので、これを行うにはCLIが最適な方法です」:愚かな質問、コマンドプロンプトからファイルに対してTextEditを実行する方法は?
ジェイソンS

馬鹿げた質問のようなことはありません。open引数としてファイル名を指定してコマンドを使用すると、デフォルトのテキストエディター(標準としてTextEdit)として設定されているもので開く必要があります。
avstrallen 2009

7

私は一緒に行く傾向があり/usr/localます。ここだ理由は素敵な説明を参照し、Filesystem Hierarchy Standard(FHS)は .⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢、その中ターンについて言う/usr/local

このホストに固有のローカルデータの3次階層。通常、bin、lib、shareなどの追加のサブディレクトリがあります。


そう、その点で他の* nixオペレーティングシステムとほとんど同じです。
jtbandes 09

2
リンクされたページが変更されると回答が無効になる可能性があるため、回答の重要な部分を参照リンクから引用してください。
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.