会社の中で、ある日不意に上司のLinuxシェル講座が始まった。
「楽しみだな〜」くらいの軽い気持ちで聞いていたけど、思ったよりかなりよかった。
自分の中で一番大きかったのは、~/.bash_profile、~/.bashrc、/etc/bashrc の流れがつながったことだ。
Linuxのことはずっと「OS」という認識だった。でも最近シェルを触る機会が増えて、ようやく少し仲良くなってきた。そのタイミングでこの話を聞いたので、かなり腹落ちした。
ls -a で世界の裏側が見える
最初に地味に感動したのはこれ。
ls -a
-a を付けると、普段は見えていない隠しファイルまで見える。
.bashrc.bash_profile...
普段見えてないだけで、Linuxは設定ファイルだらけで動いているんだなと実感した。
/etc/passwd でユーザーの正体がわかる
次に理解したのが /etc/passwd だった。
ここには、ユーザー名、UID、GID、ホームディレクトリ、使うシェルが書かれている。
user:x:1000:1000:/home/user:/bin/bash
つまり「このユーザーがどこで生活して、どのシェルで動くか」まで定義されている。
Linuxってもっとふわっとしたものだと思っていたけど、実際はかなりきっちり書かれている。
一番デカかったのは bash の読み込み順
今回の収穫はここだった。
~/.bash_profile
↓
~/.bashrc
↓
/etc/bashrc
これまで名前だけ見ても、正直あまり区別がついていなかった。
でも中身を見ると、
.bash_profileが.bashrcを呼ぶ.bashrcが/etc/bashrcを呼ぶ
という流れになっていた。
つまり、
個人設定
↓
個人共通設定
↓
システム共通設定
みたいな階層で読まれている。
これがつながった瞬間に、bashの起動がやっと理解できた。
/etc/bashrc は共通ライブラリっぽい
さらに見ていくと、/etc/bashrc には共通関数や共通設定が入っていた。
- 環境変数の初期化
- ログ出力用の関数
- コマンドのラッパー
要するに、全ユーザー向けの共通ライブラリみたいなものだと思えばわかりやすい。
ここまで来て、Linuxはコマンド暗記の世界というより、設定ファイルを読んで振る舞いを理解する世界なんだとわかった。
結局、Linuxは設定ファイルを辿るゲームだった
Linuxって、コマンドを覚える世界やと思っていたけど違った。
実際は、設定ファイルを辿るゲームだった。
今回の講座で一番よかったのは、bash の起動順を知れたことだ。初心者のうちは、コマンドを片っ端から覚えるより、~/.bash_profile、~/.bashrc、/etc/bashrc の関係を先に押さえた方が理解が進むと思う。