私が知っている限り、インタラクティブシェルはログインまたはログインできない可能性があり、起動ファイルも異なります。
- インタラクティブ+ログインシェルの場合→
/etc/profile
最初に読むことができる~/.bash_profile
、~/.bash_login
と~/.profile
- 対話型+非ログインシェルの場合
/etc/bash.bashrc
→~/.bashrc
ログインシェルかどうかに関係なく、インタラクティブシェルを使用するたびにいくつかの変数を設定したいと思います。
答え1
いいえ、ありません。はい、これは設計上の欠陥です。
以下を使用してください~/.bash_profile
。
if [ -e ~/.profile ]; then . ~/.profile; fi
if [[ -e ~/.bashrc && $- = *i* ]]; then . ~/.bashrc; fi
bashにはさらに奇妙な特徴の1つがあります。つまり、非対話型ログインシェルで、親プロセスがrshd
orの場合はsshd
bashソース(orでは~/.bashrc
ない)です。したがって、これをあなたの一番上に置くことをお勧めします。~/.bash_profile
~/.profile
.bashrc
if [[ $- != *i* ]]; then return; fi
また、見ることができます.bashrcと.bash_profileの違いそしてログインシェルと非ログインシェルの違いは何ですか?