Linuxの/ usr / binと/ usr / local / bin


445

Linuxにバイナリを配置する場所がこれほど多くあるのはなぜですか?少なくとも次の5つがあります。

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

そして、私の私書箱には、これらのいくつかに対する書き込み権限がありません。

どのタイプのバイナリがこれらbinのどれになりますか?


28
忘れました/usr/sbin/
Hello71

15
そして~/bin/個人的なもののために。
カルマリオス

1
以来、少数の場所は、今日であります/binと合併した/usr/bin/sbinしてマージされました/usr/sbin-参照の/ usrマージ用ケース
ピョートルドブロゴスト


@カルマリオス、何?使ってはいけません/usr/local/binか?
パセリエ

回答:


558
  1. /bin(および/sbin)は/、大きな/usrパーティションなどをマウントする前に小さなパーティションに配置する必要があるプログラムを対象としていました。最近では、主にのような主要なプログラムの標準的な場所として機能します/bin/shが、元の意図は、たとえば小さな組み込みデバイスへのインストールにも関連する場合があります。

  2. /sbinは、とは異なり、マウント/binする前に必要なシステム管理プログラム(通常のユーザーは通常使用しません)用です/usr

  3. /usr/bin 配布管理された通常のユーザープログラム用です。

  4. ある/usr/sbin同じ関係に/usr/binよう/sbinに持っています/bin

  5. /usr/local/binローカルでコンパイルされたパッケージなど、配布パッケージマネージャーによって管理されていない通常のユーザープログラム用です。/usr/bin将来のディストリビューションのアップグレードでは、警告なしに変更または削除される可能性があるため、インストールしないでください。

  6. /usr/local/sbin、あなたはおそらくこの時点で推測できるようにである/usr/local/binよう/usr/sbin/usr/bin

さらに、/optモノリシックの非配布パッケージ用のものもありますが、適切に統合される前に、さまざまな配布がGnomeとKDEをそこに置いていました。通常、Oracleなどの大規模で動作の悪いサードパーティパッケージ用に予約する必要があります。


37
この回答は一般的な一連の規則を明確にするのに非常に役立つ
Subfuzion

3
正規の現在のリファレンスについては、refspecs.linuxfoundation.org / fhs.shtml。@kojiroによるリンクは古く、新しい仕様はありません。
ディディエA.

2
インターネットからダウンロードしたビンはどこに置きますか?あなたの説明から、/ usr / local / binまたは/ usr / binに行くように聞こえます。/ usr / binは私が決して手動で触れてはならないもので、パッケージマネージャーだけが遊べるものですか?
ディディエA.

3
@DidierA。それを入れて、~/binそのディレクトリをユーザーとしてPATHに追加します...注のおかげで、私は真剣に古いコメントを削除しました。
小次郎

3
ここで質問の最初の部分に対する答えを見つけました:superuser.com/a/238993/425838。優先順位は、システム内の順序に基づいておりPATH、変数、そしてecho $PATH私のために示し/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gamesにおける実行可能ということを意味し、/usr/local/binものをオーバーテイクの優先順位がで/usr/binている中のものよりも優先されます/bin
ガブリエルステープルズ

65

ファイルシステム階層のマニュアルページをご覧になることをお勧めします。

man hier

オンラインでも利用可能です。たとえば、http//linux.die.net/man/7/hier


1
これは、ユーザーの質問には答えません。
ビリーONeal

14
マニュアルページには、各binディレクトリのエントリが含まれており、それらの内容を説明しています。これは質問の1つでした。
davitenio

34

Wikipedia のFilesystem Hierarchy Standardエントリは、私が持っていたときに同じ質問に答えるのに役立ち、それに非常に説明的な表があります。

そのページ1からの抜粋:

/bin        Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp.
/usr/bin    Non-essential command binaries (not needed in single user mode); for all users.
/usr/local  Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share
/usr/sbin   Non-essential system binaries, e.g., daemons for various network-services.
/sbin       Essential system binaries, e.g., fsck, init, route.

1 2019年6月19 日に取得; パーマリンク


17

sbinディレクトリは、一般的にシステム管理のみなプログラムが含まれています。通常のユーザー向けのプログラムは絶対に使用しないでください。

起動中にいくつかのプログラムが必要になり、最終的に/bin/またはになり/sbin/ます。これらは、ファイルシステムをマウントする前に使用可能である必要があります。以下のようなものmount、およびfsckファイルシステムをチェックしてマウントする必要があるが存在する必要があります。

ほとんどのパッケージプログラムは、/usr/bin/とになり/usr/sbin/ます。これらは、ルートファイルシステム以外のファイルシステム上にある場合があります。場合によっては、ネットワークにマウントされたドライブ上にある可能性があります。

ローカルのプログラムやスクリプトがで所属/usr/local/bin//usr/local/sbin/。これにより、それらは明らかに非標準であり、おそらく現場でのみ利用可能です。

詳細についてman hierは、ディストリビューションの推奨ファイルシステム階層の説明を提供するコマンドを実行してください。ウィキペディアのファイルシステム階層について読むこともできます。


1
+1 topが少なすぎる場合は本当に簡潔な説明。
-CppLearner

「ローカルプログラムとスクリプトは/ usr / local / bin /と/ usr / local / sbin /に属します」-ローカルプログラムは「OSの一部ではないが、それらをインストールして使用したい」という意味です。 「?
ジム・アホ

11

1970年代にUNIXは、すべての公式の実行可能ファイルが/binあり/usr/bin、ユーザーのホームディレクトリ(例:)の下の場所で、他のユーザー/usr/dmrにとっても関心のある可能性のある独自のバイナリを保存できます。

このオープンの結果は/usr/bin、ドキュメント化されていないソフトウェアのジャンクヤードであったためStephen Bournecron script毎晩新しいバイナリをチェックし、ドキュメントを持たない、またはドキュメントを更新せずに更新されたすべてのバイナリを削除するものを書きました。

1970年代後半/usr/binに、OSベースのディストリビューションに統合され/usr/local/bin、以前のopenの目的で使用されるようになりました/usr/bin

しばらくして、システム管理者はネットワーク(たとえばUSENET)からインポートされたソフトウェア/usr/local/binを保管non-localし、UNIX企業は/usr/bin再び同じ間違いを繰り返すことを好まなかったため、1987年頃にすべてのUNIX企業が同意したファイルシステム階層会議がありましたあきらめて代わり/usr/local/binに使用し/opt/<vendor>/binます。

残念ながら、Linuxディストリビューションはこの決定に従わなかった。...


非常に興味深いものの、これはどれも、/optUNIX についてではなく、Linuxについてであった質問に答えようとさえしません。これは、「車に4つの車輪があるのはなぜですか」と答えるようなものです。「自転車には2つあります!悲しいことに、車にはありません。」車は4を持っている理由を理解OPを助けない
terdon

2
Linuxの背景とLinuxがUNIXを模倣することを好むという事実の説明として、与えられた説明を使用できない場合、必要な背景が欠落している可能性があります。
気味悪い

1
おもしろいですが、私は混乱しているかもしれませんが、これも歴史的なものかもしれません。今日、オンラインでビンをダウンロードしても、会社のビンもそれほど違いはありません。Joe Blowがプログラムを作成してダウンロードした場合、/ usr / local / binの代わりに/ opt / JowBlow / binに入れてください。信頼できるプロバイダーと信頼できないプロバイダーの問題ですか?私には意味がないようです。
ディディエA.

1
数年前にこの「正確な」歴史を知っていたらよかったのに。a)AIXが/ usr / localを避け、/ opt / IBMと/ opt / ibmを使用し、bullfreewareが/ opt / freewareを使用する理由と、なぜ(/ opt / * sbinだけでなく)別のパスを使用する必要があるのか​​疑問に思いました。Linuxとの準関連性-より良いGNUツール-自動ツールのデフォルトの--prefixは/ usr / localです。などあまりにも悪いautotoolsの(automakeは、autoconfのは、...従っていない。しかし、我々はすべての生き残るためには、どこdistrubを学ぶ||ベンダーがプログラムを置く。。。
マイケルはフェルト

これらの会議をもう1つ開催できますか?ちょうど今回、みんなが聞いた!
MemphiZ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.