💻
Linuxのファイルシステムについて
はじめに
brewのパスを通したり、dockerでlinuxを立てたりした時にファイルのパスについてあまり詳しく知らなかったのでまとめます。
ファイルシステムとは
ファイルシステムとはそもそも、「ファイルを開く、ファイルに書き込む、ファイルの情報を取得する」などといった操作をするための標準的かつ統一されたインターフェースを提供してくれるもののこと。
LinuxはUnixの「すべてはファイルである」という考え方が生きており、「ファイルはただのバイトの流れであり、内部データ構造について関与しない」という特徴があるため、ファイルシステムを用いて様々な種類のファイルを扱えるツールが作成できる。
FHS(Filesystem Hierarchy Standard)
/binには一般ユーザ、管理者が使用するコマンドを配置。/etcには設定ファイルを配置。など、基本的な「どこに何をおくか」を決めた階層情報のこと。バラバラだと色々とトラブルが起きるため、少しでも減らそうと作られました。
| PATH | Description |
|---|---|
| /bin, /sbin | 一般ユーザーや管理者が使用するコマンド。システムプログラムとコマンド。 |
| /dev | デバイスファイル(ターミナル、ディスクドライブなど)。 |
| /etc | システム管理用の設定ファイルや各種ソフトウェアの設定ファイル。 |
| /lib | /bin, /sbinなどのコマンドやプログラムが利用する共有システムライブラリ。 |
| /lib64 | libの64ビット用。 |
| /media, /mnt | リムーバブルメディア(USBなど)のマウントポイント。 |
| /opt | 追加でインストールしたパッケージ。 |
| /proc, /sys | カーネルインターフェース。カーネルやプロセスが保持する情報を配置。 |
| /root | rootユーザーのホームディレクトリ。 |
| /tmp | アプリケーションやユーザーが利用する一時ファイル。 |
| /var | システム運用中にサイズが変化するファイル。ログ、バックアップ、ネットワークキャッシュなど。 |
| /var/log | ログファイル。 |
| /boot | システム起動時に必要なブートローダー関連のファイルやカーネルイメージ。 |
| /usr | ユーザーが共有するデータ(プログラム)。ユーティリティ、ライブラリ、コマンドなど。 |
| /usr/bin | 一般ユーザ、管理者が使用するコマンドが配置。 |
| /usr/lib | 各種コマンドが利用するライブラリ。 |
| /usr/local | 追加でインストールしたパッケージ。これ以下には、sbin, bin, libなどが配置される。 |
| /usr/sbin | システム管理者のみが実行できるコマンド。 |
| /home | ユーザーのホームディレクトリ。 |
終わりに
基本的にはパッケージマネージャーが自動的に配置してくれるとは思いますが、何か不具合があった時や、自分でコマンド(バイナリ)をインストールした際に正しい場所に配置できるようになれれば良いと思います。
Discussion