🐚

シェル設定ファイル ~/.bash_profile ~/.bashrc

2023/09/16に公開

概要

以下のシェル設定ファイルの用途、違い、読み込まれるタイミングについて説明する。

  • ~/.bash_profile
  • ~/.bashrc

用途

用途A:設定の永続化

https://zenn.dev/y__adler/articles/30d8c90317ae2f

  • 上記の記事でせっかくシェル変数を環境変数に変換し、外部コマンドからも値を参照できるようにしても、ログインシェルを終了させると全て消えてしまいます。
    設定として永続化したいですよね?
    なのでログインシェル起動後、自動で実行されるシェルの設定ファイルに環境変数を記述します。

用途B:毎回実行したいコマンド

  • 毎回実行したいコマンドがあるとします。でも手動で入力するのは面倒です。
    なので、シェル設定ファイルのことあるごとに読み込まれる性質を利用し自動でコマンドが毎回実行されるようにします。
.bashrc
eval "$(anyenv init -)"

~/.bash_profileと~/.bashrcの違い

  • ~/.bash_profile
    • ログインしたときだけ読み込まれる
  • ~/.bashrc
    • bashを起動するたびに読み込まれる
    • 多くの場合bashを起動するたびに毎回設定する必要があるため、
      基本的にはこちらにシェル設定を記載し設定をカスタマイズする。

ログインシェル起動後の流れ

  1. ログインシェルが起動する
  2. /etc/profileが読み込まれる。
    • システム全体で使用する設定ファイル。全てのユーザに共通の設定を行いたい場合はこのファイルに記述する。
  3. ~/.bash_profileが読み込まれる
    • 各ユーザ個別の設定ファイル
    • 多くの場合このファイルに、「~/.bashrcファイルが存在すればその内容を読み込む」と記載されている
  4. ~/.bashrcファイルが存在すればその内容を読み込む
    • 各ユーザ個別の設定ファイル

参考

新しいLinuxの教科書
https://www.sbcr.jp/product/4797380941/

Discussion