リナックスファイルシステムにおける/usrディレクトリの正体

usrはuser(ユーザー)ではありません

リナックスを少し使うと必ず出会うディレクトリがあります。それが/usrです。

私も最初にリナックスを使ったとき、こう思っていました。

「あ、/usrだからユーザーだろう。ユーザーアカウントに関係する何かが入るディレクトリだろう」

多くの初心者リナックスユーザーも、同じような誤解を一度はしたことでしょう。 しかし結論から言うと:

/usrは個別の「ユーザー(user)」データを保存するディレクトリではありません。 ユーザーのホームディレクトリは/homeが担当し、/usrは全く別の役割を持ちます。

この記事では、/usrディレクトリの本当の正体と役割、そして /home/opt/varなどの他のディレクトリとどのように役割が分かれるかを整理します。


1. まず結論:/usrは「ユーザーデータ」ディレクトリではない



現代のリナックスで/usrの位置を一言でまとめるとこうです。

/usr = システムが使用する「共有可能で、(ほぼ)読み取り専用のプログラム・ライブラリ・データ」が入る領域

簡単に言うと:

  • OSとアプリケーションの実行ファイル
  • それらの実行ファイルが使用するライブラリ
  • 共通で使用されるマニュアル、アイコン、データファイル

というものが入っています。

対照的に、私たちがよく想像する「ユーザー別の文書、設定、ダウンロードファイル」などは:

  • /home/ユーザー名の下に保存されます。
  • usrとは役割が完全に異なります。

したがって、/usrを「user用ディレクトリ」と考えるのは正確ではありません。


2. ではusrは何の略なのか?

ここには少し歴史と論争(?)があります。

  • 初期のUnix時代、/usrの下に実際にユーザーのホームディレクトリがあった時期もありました。
  • そのためusrを「user」の略と見る伝統的な見方があり、
  • 後世では「Unix System Resources」のように再解釈されることもあります。

しかし現代のリナックスユーザーにとって重要なのは、歴史的な文字の意味よりも「現在の役割」です。

リナックスファイルシステム階層構造標準(FHS)では/usrを次のように定義します(要約):

  • システム全体で共有可能(読み取り専用で共有できる)データが入る領域
  • プログラム、ライブラリ、マニュアル、共通データなど

つまり、現在私たちが使っているリナックスでは:

usrがuserの略かどうかはあまり重要ではなく、 「ここはシステムとアプリケーションの共通リソースが入る場所」と理解する方が実用的です。


3. /usrの下には何が入っているのか?



サーバーやデスクトップでls /usrを実行すると、通常次のようなディレクトリが見えます。

$ ls /usr
bin  lib  lib64  local  sbin  share  include  ...

各ディレクトリは大まかに次のような意味を持ちます。

  • /usr/bin
  • 一般ユーザー用の実行ファイル(コマンド)が入っています。
  • 例:/usr/bin/python/usr/bin/grep/usr/bin/curl
  • /usr/sbin
  • システム管理用の実行ファイル、主にrootが使用するコマンドです。
  • 例:/usr/sbin/sshd/usr/sbin/apachectl
  • /usr/lib/usr/lib64
  • プログラムが使用する共通ライブラリが入っています。
  • 例:.so(shared object)ファイル。
  • /usr/share
  • アーキテクチャに独立した共有データ。
  • 例:マニュアルページ(/usr/share/man)、アイコン、ロケールデータ …
  • /usr/include
  • C/C++ヘッダファイル。開発ツールチェーンで使用。
  • /usr/local
  • システムパッケージマネージャーではなく、ローカルで直接インストールしたプログラムを置く場所(後述)。

まとめると:

/usrは「システム全体で使用されるプログラムと関連リソースの集合」 — 実行ファイル、ライブラリ、共通データが集まる大きな倉庫のような場所です。


4. /usr vs /home vs /opt vs /var — それぞれの違いは?

リナックスファイルシステム構造は最初は非常に混乱します。 特に/usr/home/opt/varは混同しやすいですが、役割を比較すると次のように整理できます。

4.1 /home — 本当の「ユーザー(user)」の家

  • パス例:/home/alice/home/bob
  • ユーザー別:
  • 文書、写真、ダウンロード、プロジェクトフォルダ
  • ユーザー別設定(~/.config~/.sshなど)
  • OSを再インストールしても、/homeだけを別途保護するケースが多い。

個人データ、個人設定 = ほぼすべて /home

4.2 /usr — システムとアプリの「共通リソース」

  • プログラム実行ファイル:/usr/bin/usr/sbin
  • ライブラリ:/usr/lib*
  • 共通データ:/usr/share

「このシステム全体で共通に使うプログラム/ライブラリ/データ」= /usr

ここには「個別ユーザーアカウントのファイル」は入りません。

4.3 /opt — 「特定アプリ一塊」を置く場所

  • ディストリビューションパッケージではなく、別途配布される商用/サードパーティアプリが入ることが多い。
  • 例:/opt/google/chrome/opt/mycompany/app
  • ディレクトリ一つにアプリが丸ごと入るパターンが一般的。

「このアプリはここに丸ごと入っている」= アプリケーション単位で管理する場所

4.4 /var — 変化するデータ(Variable)

  • ログ:/var/log
  • キャッシュ:/var/cache
  • キュー、スプール:/var/spool
  • DB、状態ファイルなど頻繁に変わるデータ

「頻繁に変わる(run-time)データ」= /var


5. なぜ /bin ではなく /usr/bin なのか?(そして最近はさらに混乱する)

古いドキュメントでは /bin/usr/bin が分かれる理由が書かれていますが、最近のディストリビューションはこれを単純化して:

  • /bin/usr/bin シンボリックリンク
  • /sbin/usr/sbin シンボリックリンク

(Fedora、Ubuntu など)

つまり、現在のシステムでは実質的に:

  • 実行ファイルのほとんどは /usr/bin/usr/sbin にあり、
  • /bin/sbin過去の互換性を保つための前置きに過ぎません。

初めて触れるとさらに混乱しますが、核心は:

「実際のプログラムはどこにあるのか?」 → ほとんどは /usr/bin/usr/sbin にある だけ覚えておけば十分です。


6. 初心者リナックスユーザーが混乱しないために

リナックスを初めて使うとき、私を含め多くの人が経験する混乱は大体次のようなものです。

  • /usrだからユーザーだろう…」
  • 「それなら私のプログラムは /usr にインストールすべき?」
  • /home と何が違うの?」

実際に使うときは、以下の基準だけ覚えておけばほとんどの混乱が整理されます。

6.1 個人用スクリプト/ツールはどこに置く?

  • 自分だけで使うスクリプト、ツール:通常 ~/bin~/scripts など
  • PATH に追加して使うと OK
mkdir -p ~/bin
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc

ここに置くのは 「個人領域」 であり、/usr とは別の次元です。

6.2 システム全体で使うカスタムアプリは?

  • ソースをコンパイルして直接インストールするアプリ
  • AppImage、tar.gz で配布されるサードパーティアプリ

こうしたものを システム全体で使いたい 場合:

  • 実行ファイル/アプリ本体:/opt/アプリ名 以下
  • 実行用エントリポイント:/usr/local/bin にシンボリックリンク

このパターンがきれいです。

このように /usr/local は:

「ディストリビューションパッケージ(apt、dnf、pacman など)でインストールされない、 ローカルで管理するプログラム を置く場所」

と使うのが慣例です。

/usr 自体よりも /usr/local「管理者が自由に使える専用領域」 と見る方が自然です。

image


7. まとめ:/usrは「ユーザーの家」ではなく「システムの倉庫」

最後にもう一度まとめます。

  • /usruser データディレクトリではない
  • 現代リナックスで /usr は:
  • システムとアプリケーションの 共通実行ファイル
  • それらが使用する ライブラリ
  • 共通 マニュアル、アイコン、データ
  • すべてが集まる 大きな倉庫 のような領域です。
  • 本当のユーザー個人データは /home/ユーザー名 の下にあります。
  • 自分でインストールしたアプリは通常 /opt/usr/local などを活用して管理します。

リナックスファイルシステム構造を理解し始めると:

  • 「このファイルはどこに置くべきか?」
  • 「このアプリはシステム全体で使うのか、私だけで使うのか?」
  • 「OSを入れ替えても保護すべきものは何か?」

という質問に対する感覚が身につきます。

そしてその出発点の一つが、正しく /usr の正体を理解することです。