Linuxにバイナリを配置する場所がこれほど多くあるのはなぜですか?少なくとも次の5つがあります。
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
そして、私の私書箱には、これらのいくつかに対する書き込み権限がありません。
どのタイプのバイナリがこれらbin
のどれになりますか?
~/bin/
個人的なもののために。
/usr/local/bin
か?
Linuxにバイナリを配置する場所がこれほど多くあるのはなぜですか?少なくとも次の5つがあります。
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
そして、私の私書箱には、これらのいくつかに対する書き込み権限がありません。
どのタイプのバイナリがこれらbin
のどれになりますか?
~/bin/
個人的なもののために。
/usr/local/bin
か?
回答:
/bin
(および/sbin
)は/
、大きな/usr
パーティションなどをマウントする前に小さなパーティションに配置する必要があるプログラムを対象としていました。最近では、主にのような主要なプログラムの標準的な場所として機能します/bin/sh
が、元の意図は、たとえば小さな組み込みデバイスへのインストールにも関連する場合があります。
/sbin
は、とは異なり、マウント/bin
する前に必要なシステム管理プログラム(通常のユーザーは通常使用しません)用です/usr
。
/usr/bin
配布管理された通常のユーザープログラム用です。
ある/usr/sbin
同じ関係に/usr/bin
よう/sbin
に持っています/bin
。
/usr/local/bin
ローカルでコンパイルされたパッケージなど、配布パッケージマネージャーによって管理されていない通常のユーザープログラム用です。/usr/bin
将来のディストリビューションのアップグレードでは、警告なしに変更または削除される可能性があるため、インストールしないでください。
/usr/local/sbin
、あなたはおそらくこの時点で推測できるようにである/usr/local/bin
よう/usr/sbin
に/usr/bin
。
さらに、/opt
モノリシックの非配布パッケージ用のものもありますが、適切に統合される前に、さまざまな配布がGnomeとKDEをそこに置いていました。通常、Oracleなどの大規模で動作の悪いサードパーティパッケージ用に予約する必要があります。
~/bin
そのディレクトリをユーザーとしてPATHに追加します...注のおかげで、私は真剣に古いコメントを削除しました。
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
。
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 日に取得; パーマリンク。
sbin
ディレクトリは、一般的にシステム管理のみなプログラムが含まれています。通常のユーザー向けのプログラムは絶対に使用しないでください。
起動中にいくつかのプログラムが必要になり、最終的に/bin/
またはになり/sbin/
ます。これらは、ファイルシステムをマウントする前に使用可能である必要があります。以下のようなものmount
、およびfsck
ファイルシステムをチェックしてマウントする必要があるが存在する必要があります。
ほとんどのパッケージプログラムは、/usr/bin/
とになり/usr/sbin/
ます。これらは、ルートファイルシステム以外のファイルシステム上にある場合があります。場合によっては、ネットワークにマウントされたドライブ上にある可能性があります。
ローカルのプログラムやスクリプトがで所属/usr/local/bin/
と/usr/local/sbin/
。これにより、それらは明らかに非標準であり、おそらく現場でのみ利用可能です。
詳細についてman hier
は、ディストリビューションの推奨ファイルシステム階層の説明を提供するコマンドを実行してください。ウィキペディアのファイルシステム階層について読むこともできます。
1970年代にUNIX
は、すべての公式の実行可能ファイルが/bin
あり/usr/bin
、ユーザーのホームディレクトリ(例:)の下の場所で、他のユーザー/usr/dmr
にとっても関心のある可能性のある独自のバイナリを保存できます。
このオープンの結果は/usr/bin
、ドキュメント化されていないソフトウェアのジャンクヤードであったためStephen Bourne
、cron 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ディストリビューションはこの決定に従わなかった。...
/opt
UNIX についてではなく、Linuxについてであった質問に答えようとさえしません。これは、「車に4つの車輪があるのはなぜですか」と答えるようなものです。「自転車には2つあります!悲しいことに、車にはありません。」車は4を持っている理由を理解OPを助けない
/usr/sbin/
。