一般化する
source ~/.bashrc
新しいtmuxセッションを作成したら、デフォルトのbash設定からプロンプトを取得し、カスタムプロンプトを手動で実行する必要があります。
分析する
私はRHEL 7マシンを使用しています。私はしばらく前にbashアップデートの後にこの動作を見つけ始めましたが、これまでこの質問をしたことはありません(そして、どのアップデートでこれが起こり始めたのかわかりません)。
たとえば、プロンプトを次のようにカスタマイズしました。
[user@hostname ~]$
新しいtmuxセッションを開始するたびにbashデフォルトを使用します。
-sh-4.2$
クイック実行はsource ~/.bashrc
常に問題を解決しますが、小さな問題を解決したいときはいつでもする必要があるのは面倒です。 tmuxにこれを自動的にやり直す方法についてのアイデアはありますか?
より多くの情報が必要な場合は、喜んで提供します。
tmux.conf
ちなみにtmux.conf
カスタムファイルと言うのは大変ですが、以下に私のファイルを含めました。
setw -g mode-keys vi
# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"
ベストアンサー1
これは Bash 初期化ファイルに関連しています。デフォルトでは、次の~/.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ユーザーが自分の設定ファイルでそれを設定することをお勧めします。
修正する:上記の設定はUbuntuからコピーされました。.bashrc
対話型シェルにあるかどうかにかかわらず、ログインシェルにロードすることを選択したようです。
対話型シェルを検出するには$PS1
。
if [ -n "$BASH_VERSION" -a -n "$PS1" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
引用する
- Unixシェルの初期化
- シェル起動スクリプト
man tmux