web-dev-qa-db-ja.com

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

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

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

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

私の.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の両方を試しました。

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

echo $TERMxterm-256colorを返します。

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

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

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

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

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

11
J. Sagurton

あなたの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私のもの:

enter image description here

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

3
Michael Durrant

この問題の私の解決策は

force_color_Prompt=yes

私の.bashrc。今、私のtmuxプロンプトに色があります。

8
Panki

私のマシンでは解決策は追加することです

set -g default-terminal "xterm-256color"

~/.tmux.conf

0
Siyuan Ren