コマンドファイルのあるディレクトリが6つあります。これらは、/bin
、/sbin
、/usr/bin
、/usr/sbin
、/usr/local/bin
、および/usr/local/sbin
です。
これらの違いは何ですか?自分でスクリプトを作成している場合、どこに追加すればよいですか?
関連する:
これについては、 Linuxのファイルシステム階層標準(FHS) を参照してください。
/bin
:/usr
パーティションがマウントされる前に使用可能なバイナリ用。これは、非常に初期のブート段階で使用される単純なバイナリ、またはシングルユーザーモードのブートで使用可能にする必要があるバイナリに使用されます。 cat
、ls
などのバイナリを考えてください。
/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/
など、さらにサブディレクトリがあります。
私は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
にインストールする必要がありますが、適切な場所についてはまだわかりません。