tmuxがPS1プロンプトを色付けしない


11

最近、私はPS1変数を変更して、端末の表示の楽しみのためにかなりのソーラー色に対応することにしました。tmuxセッションにいないときは、すべてが素晴らしいです!虹、ポニー、ユニコーン、そして際立ったプロンプト!涼しい!

ただし、問題はtmux内にあります。PS1の値が期待どおりであり、tmuxが実行されていないときと同じであることを確認しました\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]

.bash_profile内のすべてのエイリアスなども期待どおりに機能しています。tmuxもecho -ne "\033[1;33m hi"、予想どおりに動作するため、問題なく色を表示していgls --colorます。

私の.bash_profileの現在の関連行はですがexport PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"、元々は.bash_promptファイルにあるスクリプトを使用していくつかの条件などを処理していました。より単純なバージョンに戻してみました。

実行bashするとプロンプトが色付けされますが、各ペインで実行する必要があります。export PS1=[that long string I've already posted]しない。

私の.tmux.confは次のとおりです。

set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

.bash_profileの関連部分:

export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
    test -z "$TMUX" && (tmux attach || tmux new-session)
fi

私はmacOS Sierra、iTerm 2を使用していますが、bashの現在の自作バージョンとシステムbash(それは現在自作を使用しています)、tmux 2.4の両方を試しました。

またtouch testing_touch_from_bash_profile、2つのペインを使用したtmuxセッション中に.bash_profileに配置し、1つのペインを強制終了し、ペインを開いて、ファイルが実際に作成されたことを確認しました。

echo $TERMを返しますxterm-256color

設定変更をテストするためにtmuxを終了するときに、tmuxを終了したこと、およびを介して現在システム上でtmuxプロセスが実行されていないことを確認しましたps -ax | grep tmux

奇妙なことに、.bash_promptスクリプトを追加すると、各tmuxペイン内で色を変更する限り、色も変わります。

私は/programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-wを見て、最初の行のbash呼び出しの後に--loginフラグを追加してみました.tmux.confの。tmuxを起動tmux new bashすると、最初のペインは色付けされますが、後続のペインは色付けされません。

$ PS1変数は、フィールドの色付けを除いて、一見すべての面で尊重されています。

誰かアイデアはありますか?


一重引用符を試してください
ケビン

5
PS1あなたが投稿の設定が変更色に任意のコマンドを持っていません。tmuxの外部で機能する実際の設定を投稿します。また、あなたが設定されなければならないPS1では.bashrcないでは、.bash_profile.bash_profileすべてで実行されないことがあります、との設定は、後に上書きされる可能性があります。
Gilles「SO-邪悪なことをやめよう」

回答:


3

あなたのPS1はまた私に白黒の出力を与えます。

しかし、私のものに戻すと色が出てくるので、あなたは違うものを理解できるはずです、私は

$ echo $PS1
\[\033[01;31m\]\t \[\033[01;32m\]durrantm \[\033[02;36m\]\h \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"` \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$

git_branchは私が持っているbash関数です:

git_branch () { 
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}

あなたのものvs私のもの:

ここに画像の説明を入力してください

これはOSXとUbuntuで同じように動作します


10

この問題の私の解決策は

force_color_prompt=yes

私の中で.bashrc。これで、tmuxプロンプトに色が付きました。


なぜこれがtmuxとそれ以外の動作が異なるのかはわかりませんが、これも私にとってはうまくいきました。
マットレイシー

これを指定する必要があるのは、コマンドを実行してからtmux、tmuxセッションの実行内で実行することsource ~/.bashrcです。各パネルでそれを行う必要があります。
evaristegd

おかげで、これはUbuntu 18.04 gnome-terminalでも動作します。
intijk

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.