web-dev-qa-db-ja.com

新しいtmuxセッションがbashrcファイルをソースしない

概要

新しいtmuxセッションを作成すると、プロンプトがデフォルトのbash構成からプルされ、カスタマイズされたプロンプトに対してsource ~/.bashrcを手動で実行する必要があります。

分析

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"
19
Justin W. Flory

私の知る限り、デフォルトでtmuxはログインシェルを実行します。 bashが対話型ログインシェルとして呼び出されると、~/.bash_profile~/.bash_login、および~/.profileが検索されます。したがって、これらのファイルの1つにsource ~/.bashrcを配置する必要があります。

この問題を解決するもう1つの方法は、ファイルに.tmux.conf行を挿入することです。

set-option -g default-Shell "/bin/bash"
20
andreatsh

これは、Bash initファイルに関連しています。デフォルトでは、~/.bashrcインタラクティブな非ログインシェルで使用されます。ログインシェルでは提供されません。 Tmuxはデフォルトでlogin Shellを使用します。したがって、tmuxによって起動されたシェルは~/.bashrcをスキップします。

default-commandシェルコマンド

デフォルトは空の文字列で、default-Shellオプションの値を使用してtmuxにログインシェルを作成するように指示します。

Bashの初期化ファイル、

  1. ログインモード:
    1. /etc/profile
    2. ~/.bash_profile~/.bash_login~/.profile(存在する最初のもののみ)
  2. interactivenon-login
    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ユーザーがプロファイルでこれをセットアップすることをお勧めします。

参考文献

7
Simba

以下を.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
Andres Salgado

シンプルなソリューション

mv .bashrc .bashrc_profile
0
Antonio Feitosa