カスタムbashスクリプトをインストールするのに適した永続的な場所はどこですか?


32

clojureプログラミング言語のbashスクリプトである "leiningen"をインストールしようとしています... ...しかし、Linuxの実行可能スクリプトをどこに置くのが適切かはわかりません。システムを永続的に安定して利用できるようにします。

/ homeのどこにも意味があるとは思いませんが、どのディレクトリ/ディレクトリがそのために使用されるべきかはわかりません。

/ usr / share?


回答:


45

(注:この投稿の~よう/home/userに翻訳します)

個人的には、カスタムメイドのシステムスクリプト/usr/local/binをすべて、個人用のbashスクリプトをすべてに入れてい~/binます。私がインストールするプログラムはごくわずかである/usr/local/binため、ディレクトリに置かれることはほとんどないので$PATH、ほとんどのマシンで既に変数に含まれています。

/usr/local/binシステムパスに追加するには(まだ存在しない場合)、これを/etc/profile以下に追加します。

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

~/binユーザーのパスに追加するには、これを次に追加します~/.bash_profile

PATH=$PATH:$HOME/bin
export PATH

時には、デフォルトの.bash_profileファイルがあることが自動的に追加されますif文があります~/bin$PATH、それが存在する場合に、その作成~/binとあなたはすでにこれを行うかどうかを確認するために新しいターミナルを開きます。


BSDはデフォルトでこれを行います。
クリスS

@Chris:BSDは多くのデータを/ usr / local / binに
置きます

bashスクリプトとシステムスクリプトの違いは何ですか?また、2つを分離する理由はありますか?
ハシム

@HashimもちろんTreyについて話すことはできませんが、個人のニーズに合わせて開発したツールは、他の人が苦労している問題を解決したことに気付いたとき、または依存する別のシステム全体のインストールがある場合、システムツールに「卒業」する傾向がありますこれらのツールのいずれかで。システム全体に何かをインストールするしきい値は、ほとんどのプログラマにとってかなり高いと思います。また、共有するツールには、多くの開発者が他の方法で作成することのないドキュメントなどが必要です。

余談ですがexport、変数を複数回使用する必要はありません(おそらく、システムは既にPATHエクスポート用にマークされているので、自分で行う必要はありません)。

9

/ usr / local /は本当に適切な場所ですが、/ optは実際にはサードパーティアプリケーション用です。「/ optは、アドオンアプリケーションソフトウェアパッケージのインストール用に予約されています。」これはFilesystem Hierarchy Standardの一部です。

/ optの説明については、http://www.pathname.com/fhs/pub/fhs-2.3.htmlを参照してください

/ usr / local /の場合、「システム管理者による使用」用です。そこにあるものを忘れないでください-それを文書化します。


指定したリンクは、「ディレクトリ/ opt / bin、/ opt / doc、/ opt / include、/ opt / info、/ opt / lib、および/ opt / manはローカルシステム管理者用に予約されています。」/ usr / localについては何もありません。そこには/ usr / local / shareのみが記載されています。一方、コンパイルされたプログラムは通常、Linuxの/ usr / localにインストールされます。システム管理者が/ opt / binを使用するのに適していると思いませんか?
raacer

1
@raacer私の経験では/usr/local、名前が示すように、ローカル管理者向けであり/opt、同様のプロセスで管理されている市販のサードパーティ製ソフトウェアなど、公式に配布されていないもの用ですアップストリーム)が、ディストリビューションのパッケージマネージャーによって管理されていないか、RPMまたは.debパッケージとして実際に配布されていますが、すべてのディストリビューションのポリシーと規則に準拠して編成およびパッケージ化されていません。

1
@raacer /usr/local文書の後半については、まったく別のセクションがあります。
トリプリー

@raacer tripleeeは正しい。リンクは次のとおりです。pathname.com /fhs/pub/…..そのシステム専用にコンパイル/ビルドされた、または複数のシステム間で共有された(ただし通常のOSパッケージ/配布の一部ではない)正しいコンパイル済みプログラム(通常はオープンソース)ただし、共有ライブラリに大きく依存しています)は/ usr / localにインストールする必要があります(基本的には/ usrの階層をミラーリングします)。おそらく独自のライブラリサポート(つまり、firefox、userify)を使用して、おそらく異なるシステムでコンパイルされたサードパーティソフトウェアは、/ optに移動する必要があります。
ジェイミーソンベッカー

3

歴史的には/ optのようなものを使用していました。それを持つことになっているユーザーのために$ PATHで更新されている限り、何でも構いません(したがって、/ homeにあるものは悪い考えです)。


2

/usr/share/clojureclojureのバイナリとライブラリを置く一般的な場所のように思えます-なぜわからないのか、それは当たり前のようです/usr/local/share/clojure-したがってsite、これらのbashスクリプト用にこの下にサブディレクトリを作成するのは問題ないようです。

一般的なポイントは、すべてのbashスクリプトを同じ場所に置くのではなく、機能ごとにスクリプトを整理する方が理にかなっているということです。


1
これにはいくつかの問題があり/usr/shareます。まず、shareアーキテクチャに依存しないファイルを意味します(つまり、アーキテクチャ間で共有されます)。そのため、ライブラリと実行可能ファイルはshareディレクトリの下に属していません。第二に/usr/local、ディストリビューションパッケージマネージャー以外は何も書き込まないでください/usr
カスペルド

2

/usr/local、「ローカル」の意味には混乱があると思います。

私が理解しているように、「ローカル」とは「ローカルマシンから発信」を意味するのではなく、より簡単に「ローカルマシンに固有」であり、ローカルマシンから発信される場合と発信されない場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.