一般化する
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
答え2
私が知る限り、ログインシェルはデフォルトで実行されますtmux
。インタラクティブログインシェルとして呼び出されたら、およびをbash
見つけます。したがって、次のファイルのいずれかを置く必要があります。~/.bash_profile
~/.bash_login
~/.profile
source ~/.bashrc
この問題を解決する別の方法は、.tmux.conf
次の行をファイルに配置することです。
set-option -g default-shell "/bin/bash"
答え3
以下を追加してください.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
答え4
$HOME/.tmux.conf
次の内容でファイルを変更します。
set-option -g default-shell "/usr/bin/bash"
set-option -g default-command bash
それを覆う必要があります。その間、ドットファイルを$HOME/.config/tmux
ドットのないフォルダに入れてみてはいかがでしょうか。次に、次の項目にカラー出力を追加してキーバインディングを再読み込みします$HOME/.config/tmux/tmux.conf
。
set -g default-terminal "screen256color"
bind r source-file "${HOME}/.config/tmux/tmux.conf"
< 3.1の場合は、tmux -V
エイリアスを追加して$HOME/.bashrc
次の場所から設定ファイルをロードします。
alias tmux="tmux -f ${HOME}/.config/tmux/tmux.conf"
/etc/tmux.conf
または、デフォルトの場所でシステム全体の構成に設定します。