web-dev-qa-db-ja.com

/ bin、/ sbin、/ usr / bin、/ usr / sbin、/ usr / local / bin、/ usr / local / sbinの違い

コマンドファイルのあるディレクトリが6つあります。これらは、/bin/sbin/usr/bin/usr/sbin/usr/local/bin、および/usr/local/sbinです。

これらの違いは何ですか?自分でスクリプトを作成している場合、どこに追加すればよいですか?


関連する:

278
Keelan

これについては、 Linuxのファイルシステム階層標準(FHS) を参照してください。

  • /bin/usrパーティションがマウントされる前に使用可能なバイナリ用。これは、非常に初期のブート段階で使用される単純なバイナリ、またはシングルユーザーモードのブートで使用可能にする必要があるバイナリに使用されます。 catlsなどのバイナリを考えてください。

  • /sbin:同じですが、スーパーユーザー(root)特権が必要なバイナリの場合。

  • /usr/bin:最初と同じですが、一般的なシステム全体のバイナリ用です。

  • /usr/sbin:上記と同じですが、スーパーユーザー(root)特権を持つバイナリが必要です。


独自のスクリプトを作成している場合、これらをどこに追加すればよいですか?

上記のどれでもない。システム全体で利用可能なスクリプトには、/usr/local/binまたは/usr/local/sbinを使用する必要があります。 localパスは、システムパッケージによって管理されていないことを意味します(これは、Debian/Ubuntuパッケージでは エラー です)。

ユーザースコープのスクリプトの場合は、~/bin(ホームディレクトリの個人用binフォルダー)を使用します。

FHSは/usr/localについて次のように述べています。

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

342
gertvdijk

私は1年以上前に自分自身に同様の質問がありました: 私のbashスクリプトを置くのに最適なディレクトリ?

バイナリのシステムディレクトリ

man hier(階層)は、すべてのディレクトリをリストします。バイナリ専用のものを取得するには、次を使用します。

$ man hier | grep -E 'bin$|sbin$|^.{7}(/bin)|^.{7}(/sbin)' -A2

       /bin   This directory contains executable programs which are needed in single user
              mode and to bring the system up or repair it.

--
       /sbin  Like  /bin,  this  directory  holds commands needed to boot the system, but
              which are usually not executed by normal users.

--
       /usr/X11R6/bin
              Binaries  which  belong  to the X-Window system; often, there is a symbolic
              link from the more traditional /usr/bin/X11 to here.
--
       /usr/bin
              This  is the primary directory for executable programs.  Most programs exe‐
              cuted by normal users which are not needed for booting or for repairing the
--
       /usr/local/bin
              Binaries for programs local to the site.

--
       /usr/local/sbin
              Locally installed programs for system administration.

--
       /usr/sbin
              This directory contains program binaries for  system  administration  which
              are  not  essential  for the boot process, for mounting /usr, or for system

独自のスクリプトを配置する場所は?

すべてのユーザーがスクリプトにアクセスするには、/usr/local/binにそれらを配置できます。ここでファイルを追加/変更するには、Sudoアクセスが必要であることに注意してください。参照: カスタムLinuxスクリプトを配置する標準的な場所はありますか?

独自のユーザーIDスクリプトの場合は、/home/YOUR_NAME/binに配置します。最初にこのディレクトリを作成し、ターミナルを再起動して、~/.profileによってパスを自動的に設定する必要があることに注意してください。参照: / home/username/binを$ PATHに追加する方法


私が知っていること私は知らない

私はAsk Ubuntuでより複雑なbashスクリプトのいくつかを取り、githubのインストールスクリプトでセットアップすることを考えています。以下に例をいくつか示します。

Ithinkスクリプトは$ PATHにある/usr/binにインストールする必要がありますが、適切な場所についてはまだわかりません。

5