コマンドラインアプリケーションはどこに保存すればよいですか?


46

コマンドラインアプリケーションをダウンロードすると、それらは私の~/Downloads/ディレクトリにあります。しかし、これはコマンドラインアプリケーションを配置するのに間違った場所だと感じています。Mac OS Xファイルシステムのどこにコマンドラインアプリケーションを保存する必要がありますか?

/Applications/また、間違っているように感じます。デスクトップアプリケーションの場合はそれ以上です。また/bin/、OS Xに属するアプリケーションの場合はさらに聞こえます。


物事を直接/ binまたは/ Applicationsに入れるのは一般的に悪い形式であるというあなたの感情に同意します。Patrixの答えは、プログラムとスクリプトの一般的なコマンドラインストレージで見た最も標準的な場所です。
bmike


2
リンクされた質問はいくつかのサードパーティの選択肢をジャグリングすることについてのように見えるので、これらは重複しているとは思われません。
bmike

回答:


44

OS XはUNIXの遺産に由来する/usr/local/binため、特定のユーザーではなくローカルにシステムに属するコマンドラインアプリケーションおよびスクリプト用のシステムファイルを保存する必要があります。次を実行して、最初にこのディレクトリを作成する必要がある場合があります。

sudo mkdir -p /usr/local/bin

次を実行することにより、任意のコマンドラインアプリケーションをそのフォルダーに移動できます。

sudo mv my-binary /usr/local/bin/

これ/usr/local/binがターミナルの標準検索パスの一部であることを確認するには/etc/paths、必要に応じてコンテンツを確認して追加します。

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

一部のユーザーは、ユーザーレベルのスクリプト用に2つ目のディレクトリを作成しますが、これはさらに個人的な好みに左右されます。

通常、各ユーザーフォルダーにbinディレクトリを作成し、Finderから非表示にしますが、非表示にするかどうかは自分で決定できます。

 mkdir ~/bin
 chflags hidden ~/bin

この場合、シェル起動スクリプトを変更して、各ユーザーのパスにこの場所を含める必要があります(~/.bash_profile標準シェルであるbashの場合)

 export PATH=$PATH:~/bin

または、実行時に各アプリへのパスをハードコーディングします。


3
これは絶対に最良の提案であり、私が尋ねた人に与えるものです。私は2つだけ追加します:1)/etc/launchd.confはパスを追加する必要があるかもしれません、2)homebrew私は自分のシェルスクリプトのために経由してインストールされたUnixユーティリティに/ usr / local /を使用します〜/ Dropbox / bin /を$ PATHに追加したため、すべてのMacにすべてのカスタムシェルスクリプトがあります。しかし、代わりに/ usr / local / bin /に加えてそれを行います。
TJルオー

/ usr / local / binはユーザーのスクリプト用従来のUNIXスポットであり、システム上の他のユーザーにアクセスできます。スクリプトをそこに配置すると、すべてのユーザーの$ PATHにスクリプトが簡単に配置されます。しかし、ほとんどのMacには単一のユーザーがいるので、Macの方法は~/binディレクトリを作成し、chflags uchg ~/binで非表示にし、ユーザー~/.bash_profileに追加してユーザーの$ PATHの一部にすることだと思います。~/binセキュリティと移行のための優れた場所です。それ以外の場合は、/ usr / local / binに残したものを覚えておく必要があります。そしてln -s ~/bin ~/Dropbox/またいいです。
まったり

7

/optディレクトリを作成することを検討してください。これは、慣例によりカスタムUnixソフトウェアが表示される別の場所です。


5
/opt/完全なアプリケーションには非常に便利ですが/usr/local/bin/、スタンドアロンのコマンドラインスクリプトにはより適しています。多くの場合/opt/、関連するスクリプトのコレクションがライブラリとして機能するインスタンスで使用することをお勧めします(例:)/opt/myscriptslib/bin/
プラスミド87

アドバイスありがとうございます。私は個人的にフォルダ/ opt /を作成してソフトウェアを入れ、すべての実行可能ファイルの/ usr / local / binへのシンボリックリンクを作成しました...その後、パス環境変数に/ opt / myspecific-softを追加する必要はありません。
рüффп
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.