新しいtmuxセッションを作成すると、プロンプトがデフォルトのbash構成からプルされ、カスタマイズされたプロンプトに対してsource ~/.bashrc
を手動で実行する必要があります。
RHEL 7マシンを使用しています。私はしばらく前にbashの更新後にこの動作に気づき始めましたが、今まで質問をするのに慣れていませんでした(そして、これがどの更新で起こったかはわかりません)。
たとえば、プロンプトを次のようにカスタマイズしました。
[user@hostname ~]$
新しいtmuxセッションを開始するたびに、bashのデフォルトのように見えるものが使用されます。
-sh-4.2$
source ~/.bashrc
をすばやく実行すると、常に問題が解決しますが、小さな問題を修正するたびにこれを実行しなければならないのは面倒です。 tmuxにこれを自動的に再び実行させる方法についてのアイデアはありますか?
さらに情報が必要な場合は、提供させていただきます。
参考までに、以下にtmux.conf
ファイルを示しますが、カスタムとは言えません。
setw -g mode-keys vi
# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"
私の知る限り、デフォルトでtmux
はログインシェルを実行します。 bash
が対話型ログインシェルとして呼び出されると、~/.bash_profile
、~/.bash_login
、および~/.profile
が検索されます。したがって、これらのファイルの1つにsource ~/.bashrc
を配置する必要があります。
この問題を解決するもう1つの方法は、ファイルに.tmux.conf
行を挿入することです。
set-option -g default-Shell "/bin/bash"
これは、Bash initファイルに関連しています。デフォルトでは、~/.bashrc
はインタラクティブな非ログインシェルで使用されます。ログインシェルでは提供されません。 Tmuxはデフォルトでlogin Shellを使用します。したがって、tmuxによって起動されたシェルは~/.bashrc
をスキップします。
default-command
シェルコマンドデフォルトは空の文字列で、
default-Shell
オプションの値を使用してtmuxにログインシェルを作成するように指示します。
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
以下を.tmux.conf
に追加します。
set-option -g default-Shell "/bin/bash"
しないでください望ましい結果が得られます。
source "$HOME/.bashrc"
を~/.bash_profile
に追加した場合のみ、意図した結果が得られます。
これは、新しいウィンドウまたはペインを開くとき、および新しいtmuxセッションを切り離して開くときに、アクティブなtmuxセッションで機能します。
テスト済み:
VERSION="16.04.2 LTS (Xenial Xerus)"
tmux 2.1
mv .bashrc .bashrc_profile