回答:
~/.bashrc
そして/etc/bash.bashrc
インタラクティブたびに実行されbash
、シェルが起動されています。
これとは対照的に、~/.profile
および/etc/profile
任意のたびに実行され、ログインシェルが起動されています。したがって、bash
シェルである必要はありませんが、ログインシェルである必要があります(多くのbash
シェルインスタンスはログインシェルではありません)。
bash
シェルはそれを提供するシェルプログラムであるシェルでbash
はなくなどの他のプログラムよりも、dash
。したがって、エントリを追加するコマンドをファイルに入れると、次のようPATH
になりbashrc
ます。
シェルがでない場合は何もしませんbash
。これはよくあることです。たとえばPATH
、グラフィカルログインセッションでは、変更されません。PATH
コマンドラインプログラムで使用されるだけではないことを覚えておいてください。
入れ子になったbash
シェルがある場合は、繰り返し追加します。したがって、シェル内でシェルを起動する場合(これは、さまざまな理由で非常に一般的です)、複数の~/bin
エントリがにスタックされますPATH
。これにより、PATH
環境変数が読みにくくなり、パフォーマンスが低下することもあります。
これらは望ましくありません。したがって、これをファイルに入れるのは間違っていbashrc
ます。それは本当に属してい~/.profile
ます。~/.profile
ある適切な場所のためには:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
非ログインシェルは、親としてログインシェル(またはログインシェルのように動作するもの)を持ちPATH
、このログインシェルからを含む環境変数のほとんどを継承します。したがって、パス変更コマンドを配置~/.profile
するには、それらを有効にするためにログアウトしてから再度ログインする必要がありますが、非ログインシェルの環境にも影響します(シェルではないプログラムの環境にも影響します。親プロセスから継承された独自の環境変数のセット(「環境」と呼ばれます)。
bin
ログオンしたときにプライベートディレクトリが存在せず、このログインセッション中に作成したようです。ログアウトして再度ログインすると、それは内にありますPATH
。プライベートbin
ディレクトリの作成は一度だけ行う必要があるため、これは1回限りの不便です。