会社の中で、ある日不意に上司の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 の関係を先に押さえた方が理解が進むと思う。

関連記事