darudaru

だるだるしてるエンジニア

.bashrcと.bash_profileって何がどう違って、何を書くべきなの?

開発環境を構築していると、よく「これは.bashrcに書いて!」「それは.bash_profile書いて!」という記事を見かけ、言われるがままに記述していたのですが、2つのファイルの使い分けを分かっていなかったので改めて調べてみました。

.bashrc

bashから実行される設定ファイルです。.bash_profileに読み込む処理が書かれていることで、ログイン時にも実行がされます。エイリアスなどの設定を記述します。

.bash_profile

ログイン時だけ実行される設定ファイルです。環境設定や起動プログラムの設定を記述します。

.bashrcと.bash_profileの違い

.bash_profileはログイン時に実行され、.bashrcは.bash_profileや別のシェルが起動したときにも実行されます。

.bash_profileの中身を見ると、.bashrcを読み込む処理が書かれてることが分かります。

if [ -f ~/.bashrc ] ; then
    . ~/.bashrc
fi

シェルを起動するたびに実行したいものは、.bashrcに記述する必要があります。シェルって具体的に何だろう?というところですが、lsなどのコマンドを叩くときも.bashrcが読み込まれることになります。

ちなみに言われるがままに設定を追加し続けたわたしの.bashrcと.bash_profileには、.bashrcに環境変数の設定が入っていたり、.bash_profileにエイリアスが追加されていたりとくっちゃくちゃな状態でした(´・ω・`) きちんと環境変数は.bash_profileへ、エイリアスは.bashrcへ、書くべき設定ファイルに記述を移動しました。