回答:
はい、の最後.bash_profile
に次の行を追加します:
. ~/.bashrc
これにより、通常はプロファイルのみを処理するような状況でrcファイルが自動的に読み込まれます。
bash
特定のファイルをいつ実行するかに関するルールは複雑で、起動するシェルのタイプ(ログイン/非ログイン、インタラクティブかどうかなど)、コマンドライン引数、環境変数によって異なります。
あなたはそれらをman bash
出力で見ることができます、ただ探してくださいINVOCATION
-おそらくそれを消化してデコードするのに少し時間が必要です:-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
次の行を〜/ .tmux.confファイルに追加することで、bashを実行すると明示的に機能しました。
set-option -g default-command "exec /bin/bash"
~/.tmux.conf
:set -g default-command "/bin/bash"
。どうも。
以前の回答は解決策を提供しましたが、理由を説明しませんでした。ここにあります。
これは、Bash initファイルに関連しています。デフォルトで~/.bashrc
は、対話型の非ログインシェルで使用されます。ログインシェルでは提供されません。Tmuxはデフォルトでログインシェルを使用します。したがって、tmuxによって開始されたシェルはskip ~/.bashrc
です。
default-command
シェルコマンドデフォルトは空の文字列で、tmuxに
default-shell
オプションの値を使用してログインシェルを作成するように指示します。
Bashの初期化ファイル、
/etc/profile
~/.bash_profile
、~/.bash_login
、~/.profile
(存在するだけ最初のもの)/etc/bash.bashrc
(一部のLinux、Mac OS Xにはない)~/.bashrc
$BASH_ENV
奇妙なインタラクティブな非ログインロード要件は、他の状況でも人々を混乱させます。最善の解決策は、の負荷要件を変更することがある~/.bashrc
としてだけインタラクティブ正確にUbuntuのようないくつかのディストリビューションには、やっていることです。
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
これはあなたが望む解決策です。そして、私はすべてのBashユーザーがプロファイルでこれをセットアップすることをお勧めします。
参考文献
man tmux
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile