teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足

2016/01/24 01:22

投稿

otn
otn

スコア86329

answer CHANGED
@@ -1,6 +1,9 @@
1
1
  `.bash_profile`は、ログインシェルの時だけに読み込まれます。
2
- `.bashrc`は、ログインシェルでない対話型シェル(≒端末からコマンドを読み込んで実行するシェル)の時だけに読み込まれます。
2
+ `.bashrc`は、ログインシェルでない対話型シェル(≒端末からコマンドを読み込んで実行するシェル、ログインシェルから`bash`と打って起動したシェル)の時だけに読み込まれます。
3
3
  対話型でないシェル、つまりシェルスクリプトを実行するシェルではどちらも読み込まれません。
4
4
 
5
+ ここまでは、`man bash`の「起動」というセクションに詳しく書いてあります。
6
+ わかりにくければ、それぞれの冒頭に`echo bash_profile start`、`echo bashrc start`とか書いてみると目で見て起動タイミングが分かると思います。
7
+
5
8
  環境変数は、子プロセスに継承されるのでログインシェルでだけ設定すればよく、環境変数設定は`.bash_profile`に書くのがいいと思います。
6
9
  一方、alias定義や関数定義は子bashに継承されないので、`.bash_profile`と`.bashrc`の両方に書く必要がありますが、`.bashrc`にだけ書いて、`.bash_profile`から`source ~/.bashrc`すると書くのを一カ所に出来ます。