はい、それは予想される動作です。
動作は、要するに次のとおりです。
- bashは対話型ログインシェルとして開始しました:読み取り
~/.profile
- bashは対話型の非ログインシェルとして開始しました:読み取り
~/.bashrc
読むスタートアップファイルに関するbashのマニュアルを詳細については。
個人的には、この振る舞いは奇妙であり、この設計決定の合理化はまだ見つかっていないと思います。
用語の説明:
- 対話型シェルは、あなたが、あなたはそれにコマンドを入力することができることを意味し対話することができるシェルです。使用するほとんどのシェルは、対話型シェルです。
- 非対話型シェルは、あなたが対話できないとのシェルです。シェルスクリプトは、非対話型シェル内で実行されます。
- ログインシェルは、あなたのシステムへのログイン時に起動されるシェルです。
- 非ログインシェルは、ログインプロセスの後に開始されたシェルです。
表示されるほとんどのシェルは、対話型の非ログインシェルです。これは、gnomeが「ログインシェル」であるため、gnomeのようなグラフィカル環境を実行している場合に特に当てはまります。gnome内で開始されるbashセッションは、非ログインシェルです。実際の対話型ログインシェルを表示する場合は、仮想コンソールにアクセスし(を使用Ctrl+Alt+F1
)、ユーザー名とパスワードを使用してログインします。これは、実際の対話型ログインbashシェルです。を使用してグラフィカルシェルに戻ることができCtrl+Alt+F7
ます。
--login
ログイン後にbashをログインシェルのように動作させるオプションがあります。ログインシェルとしてbashを起動するようにgnome-terminalを設定すると、その--login
オプションを使用してbashが起動します。
通常、bashは常に~/.bashrc
対話型シェルで読み取ります。これを行うことをお勧めします。
~/.bash_profile
ファイルを作成します。ログインシェルとしてbashを起動した場合、検索する~/.bash_profile
前にまず検索し~/.profile
ます。bashが検出~/.bash_profile
すると、読み取りは行われません~/.profile
。
に次の行を追加します~/.bash_profile
。
[ -f "$HOME/.profile" ] && source "$HOME/.profile"
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
bashが対話型ログインシェルとして起動された場合、次のファイルを読み取ります。
~/.bash_profile
~/.profile
~/.bashrc
また、bashが対話型の非ログインシェルとして起動された場合:
~/.bashrc
にbash固有の要素と、bash固有で~/.bashrc
はない要素を配置する必要があり~/.profile
ます。たとえば、PATH
入っ~/.profile
てHISTCONTROL
行き~/.bashrc
ます。
~/.profile
bash固有ではないことに注意してください。他のテキストベースのシェル(shやkshなど)やグラフィカルシェル(gnome)も読み取ります~/.profile
。そのため、bashに特定のものを入れるべきではありません~/.profile
。