Bash
Zsh

.bash_profile ? .bashrc ? いろいろあるけどこいつらなにもの?

More than 1 year has passed since last update.


正体

ログインシェル(PCを起動したときにデフォルトに指定されるシェル)をbashにしている場合はログイン(起動)時に以下のような順番で設定ファイルが読み込まれ、PATHを通す、エイリアスを定義する、プログラムを実行するなどの設定が自動で設定される。


1. /etc/profile

全ユーザーに適用されるデフォルトの設定ファイル。

ユーザー単位では編集しない。(つまり、ほとんどいじらない)


2. ~/.bash_profile

存在していれば読込まれる設定ファイル。

ユーザー単位での設定を書く。

無くても良い。


3. ~/.bash_login

ログインして~/.bash_profileが存在しない場合にのみ、存在していれば読込まれる設定ファイル。

無くても良い。


4. ~/.profile

ログインして~/.bash_profile ・ ~/.bash_loginが存在しない場合にのみ、存在していれば読み込まれる設定ファイル。

無くても良い。


5. ~/.bashrc

シェル(bash)ログインで毎回読込まれる設定ファイル。

無くても良い。


~/.bash_logout というのもある。

シェル(bash)ログアウトに毎回読込まれる設定ファイル。

無くても良い。


どう使い分ければいいか!


~/.bash_profile

ログイン時に一度設定すればいいもの


~/.bashrc

bashを起動するたびに設定する必要のあるもの


その他は?

基本的に上の2つで事足りる。

しかし、以下のような特別な場合があれば利用する価値がありそう。

全ユーザーでログイン時に起動したいアプリケーションがある場合などは/etc/profileにその処理を書いておくことで全ユーザーでログイン時に処理が実行される。

ログイン時には必ずこの処理をしてほしいなどということがあれば、~/.bash_loginにその処理を書いておくことで~/.bashrcを削除しても処理が実行される。