bashrcやbash_profileの読み込むタイミングや順番まとめ

bashrcやbash_profileの読み込むタイミングや順番まとめ プログラミング
困ったさん
困ったさん
bashrcやbash_profileに書けばログインの時に読まれるとかなんとか、、、ってあいまいなんだよね。

こんな疑問を解決します。

この記事を書いてる人

FUMIPEN blogを運営
本記事の内容

  • ログイン時にbashやbashrcの環境変数の読み込まれるタイミング
  • bashrcやbash_profileに何を記述すればいいのか

本記事では「環境変数の読み込まれるタイミングと適切な記述」について解説

結論から話すと、

結論

  • etc以下では全ユーザーに設定がおよび、ホームディレクトリ以下の設定ファイルはユーザーごとの設定
  • bash_profileはログイン時、bashrcはbash起動時に実行される

bash起動時における設定ファイルの実行順序の前に知っておくべき前提

bash起動時における読み込まれる可能性のある設定ファイルをここに並べると

読まれる可能性のあるファイル

  • etc/profile
  • etc/bash.bashrc
  • /etc/bashrc
  • ~/.bashrc
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc

かと思います。

こんなにあったら流れを覚えることやどれを編集すればいいのかわからない。。。
困ったさん
困ったさん

ここで大事になるポイントを2点話します。

etcはすべてのユーザ、ホームディレクトリは個人ユーザーが対象

すべてを覚えることも大事ですが、流れだけ抑えて自分が設定したいファイルのみに絞ることです。

覚えてほしいのはetcはすべてのユーザー対象、~(ホームディレクトリ)は個人ユーザーの設定対象だということです。

ふみペン
ふみペン
組織で設定を任されているのなら、etc以下、個人なら~以下を扱えばいいね!

ログインシェルはbash_profile、対話型シェルはbashrcを読むこむ

ログインシェルは名前の通り起動した際に読むこまれるシェルです。

対話型シェルは黒い画面に直接入力して読むこませる方法です。

ログインシェルの例

Rlogin_接続

ここでOKボタンを押すとサーバーに接続することができます。

Rlogin_ログインシェル

こんな感じで入るとログインシェルが読み込まれます。

対話型シェルの例

Rlogin_対話型シェル

このように端末エミュレータで実行をしたときに読み込まれているのが~/.bashrc/etc/bashrcです。

ふみペン
ふみペン
この違いもかなり重要になるから覚えておいてね!

この二つの前提を知ったうえで話を進めていきます。ここまでをまとめると

  • 個人ユーザーは~(ホームディレクトリ以下)で組織ならetc以下のbashファイルを設定
  • ログインシェルは起動時に、対話型シェルは端末エミュレータ内で読む込まれる

それではどういった実行順序を踏んで設定を読む込むのか説明していきます。

bash起動時における設定ファイルの実行手順

それでは実行手順をさらっと見ていきましょう。

bash 読み込み 手順

これはLinucの参考書を参考にして作りましたが、この流れを覚えておけば大丈夫です。

ログインシェルの実行手順

bash ログインシェル 読む込み 手順
全ユーザーを対象にした場合

  • /etc/profile
  • /etc/bash.bashrc

で読み込まれます。

個人設定を変更したい場合

  • ~/.bash_profile
  • ~/.bash_login(bash_profileが存在しない場合)
  • ~/.profile(bash_loginが存在しない場合)

となってます。

私は毎回bash_profileを作成していますので、基本的な設定はbash_profileに書けば十分かと思います。

対話型シェルの実行手順

bash 対話型 読み込み 手順

対話型の場合はこのようになります。

全ユーザーを対象にした場合は/etc/bashrcを設定します。

個人の場合は~/.bashrcを設定すればいいです。

手順を理解して自分好みのカスタマイズ

いかがでしたでしょうか。

まとめ

  • etc以下はすべてのユーザーに、~以下は個人を対象に適用される
  • ログインシェルの場合、全ユーザーはetc/profile→etc/bashrc.bashrc
  • 個人ユーザーの場合は~/.bash_profile→~/.bash_login→~/.profile
  • 対話型シェルの場合、全ユーザーは/etc/bashrc
  • 個人ユーザーの場合は~/.bashrcを読み込む

これらの手順を覚えて少しでも自分好みの環境を整えていきたいですね。

私は現在趣味で畳み込みニューラルネットワーク(CNN)について解説など記事にしたりして画像解析を行っています。

自分が好きなことをやって、少しでも研究を進めれたら最高ですし、そのような環境にも将来的には挑戦していくつもりです。

Twitterもやってますので覗いていただけたら嬉しいです。