一般化する

一般化する

一般化する

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 初期化ファイル、

  1. ログイン方法:
    1. /etc/profile
    2. ~/.bash_profile、、、(最初のもののみが存在する~/.bash_login~/.profile
  2. インタラクティブ ログインしていません:
    1. /etc/bash.bashrc(一部のLinux; Mac OS Xではありません)
    2. ~/.bashrc
  3. 非対話型:
    1. ソースファイルは次の場所にあります。$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

引用する

おすすめ記事