回答:
Bashが対話型ログインシェルとして起動した場合、Bashが処理できるファイルの1つは~/.profile
です。
対話型の非ログインシェルとして起動すると、起動しません。ITプロセス/etc/bash.bashrc
と(そのファイルまたは同様のファイルは、あなたのBashのバージョンで有効になっている場合) ~/.bashrc
。
以下を追加できます~/.bashrc
(ただし、ループや値が誤って変更されることに注意してください)。
. $HOME/.profile
[ -z "$SOME_VAR_SET_IN_PROFILE" ] && . ~/.profile
シェルの起動方法に依存します。他の人が言ったように、ログインシェルはあなたのプロファイルをロードします(最初に.bash_profileを探し、次に.profileを試します)。これらのいずれかが見つかると、それらをロードします。非ログインシェル(インタラクティブまたは非インタラクティブ)は、.bashrcをソースします。
すべてを.bashrcに入れることをお勧めします。.profile / .bashrcの分割は一種のarbitrary意的なものであり、ttyが単なるデバイス名ではなく、実際のTeleTypeを意味するUNIXの昔にはより意味がありました。これは、サーバーへの「メイン」ログインで特定のこと(メールのチェックなど)を開始し、他のシェルの通常のセットアップを開始することを目的としていました。ログインするほとんどのLinuxでは、グラフィカルインターフェイス(KDE、gnome、CDE 'shudder')にログインしているため、実際にはシェルにログインしていません。「ログインプロセスの生成」は、セッションマネージャによって処理されます。今ではあまり関係がありません。
私の提案:.profileを次のもののみで構成します。
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
.bashrcの最初の行として、bashスクリプトを実行しているときに発生する奇妙なことを早期に飛び出してガードします。
[[ $- != *i* ]] && return
.profile
bashに依存しないでください。.bash_profile
ロード.profile
してからロードするように構成することをお勧めします.bashrc
。唯一のbashとらわれないでものを入れ.profile
、同様にPATH
してLC_*
ものを。残りをに入れ.bashrc
ます。