ログインするかどうかにかかわらず、常にインタラクティブモードに切り替えるBashファイルはありますか?

ログインするかどうかにかかわらず、常にインタラクティブモードに切り替えるBashファイルはありますか?

私が知っている限り、インタラクティブシェルはログインまたはログインできない可能性があり、起動ファイルも異なります。

  • インタラクティブ+ログインシェルの場合→/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つがあります。つまり、非対話型ログインシェルで、親プロセスがrshdorの場合はsshdbashソース(orでは~/.bashrcない)です。したがって、これをあなたの一番上に置くことをお勧めします。~/.bash_profile~/.profile.bashrc

if [[ $- != *i* ]]; then return; fi

また、見ることができます.bashrcと.bash_profileの違いそしてログインシェルと非ログインシェルの違いは何ですか?

関連情報