Bash

tmux 不著色 PS1 提示

  • October 16, 2020

我最近決定更改我的 PS1 變數以適應一些漂亮的 Solarized 顏色,以滿足我的終端觀看樂趣。當不在 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我的 .bash_profile 中放置了兩個窗格的 tmux 會話,殺死了一個窗格,打開了一個窗格並驗證了該文件實際上是創建的。

echo $TERM返回xterm-256color

我已經確保在退出 tmux 以測試設置更改時,我已經退出了 tmux,並且目前沒有 tmux 程序正在通過ps -ax | grep tmux.

奇怪的是,只要我在每個 tmux 窗格中執行,採購 .bash_prompt 腳本也會改變顏色。

我查看了https://stackoverflow.com/questions/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w並嘗試在第一行的 bash 呼叫之後添加 –login 標誌我的 .tmux.conf。啟動 tmuxtmux new bash將導致第一個窗格著色,但後續窗格不會。

除了為任何欄位著色之外,$PS1 變數似乎在所有方面都受到尊重。

有人有想法麼?

在我的機器上,解決方案是添加

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

~/.tmux.conf.

我對這個問題的解決方案是設置

force_color_prompt=yes

在我的.bashrc. 現在我的 tmux 提示有顏色了。

引用自:https://unix.stackexchange.com/questions/360545