Ich habe vor kurzem beschlossen, meine PS1-Variable zu ändern, um einige hübsche Solarized-Farben für mein Terminal-Sehvergnügen aufzunehmen. Wenn Sie nicht in einer tmux-Sitzung sind, ist alles großartig! Regenbogen, Ponys, Einhörner und eine unterscheidbare Aufforderung! Cool!
Das Problem liegt jedoch bei tmux. Ich habe überprüft, dass der Wert von PS1 so ist, wie ich es erwartet habe, und der gleiche wie der, wenn tmux nicht läuft, nämlich \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]
.
Alle meine Aliase usw. in meinem .bash_profile funktionieren ebenfalls wie erwartet. tmux zeigt auch Farben ohne Zwischenfälle an, echo -ne "\033[1;33m hi"
wie erwartet gls --color
.
Die aktuell relevante Zeile in meinem .bash_profile lautet export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
, obwohl ich ursprünglich ein Skript in einer .bash_prompt-Datei bezogen habe, um einige Bedingungen usw. zu behandeln. Ich habe versucht, zur einfacheren Version zurückzukehren.
Durch Ausführen bash
wird die Eingabeaufforderung eingefärbt, muss jedoch in jedem Bereich ausgeführt werden. export PS1=[that long string I've already posted]
wird nicht.
Meine .tmux.conf lautet wie folgt:
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}"
Relevante Teile von .bash_profile:
export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
test -z "$TMUX" && (tmux attach || tmux new-session)
fi
Ich verwende macOS Sierra, iTerm 2, ich habe sowohl die aktuelle Homebrew-Version von Bash als auch die System-Bash (derzeit wird Homebrew verwendet), tmux 2.4, ausprobiert.
Ich habe auch touch testing_touch_from_bash_profile
in meinem .bash_profile während einer tmux-Sitzung mit zwei Fenstern platziert, einen Bereich getötet, einen Bereich geöffnet und überprüft, ob die Datei tatsächlich erstellt wurde.
echo $TERM
kehrt zurück xterm-256color
.
Ich habe sichergestellt, dass beim Beenden von tmux zum Testen von Einstellungsänderungen tmux beendet wurde und dass derzeit kein tmux-Prozess auf dem System über ausgeführt wird ps -ax | grep tmux
.
Seltsamerweise ändert die Beschaffung des Skripts .bash_prompt auch die Farbe, solange ich dies in jedem tmux-Bereich tue.
Ich habe mir /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w angesehen und versucht, das Flag --login nach dem Bash-Aufruf in der ersten Zeile hinzuzufügen meiner .tmux.conf. Wenn Sie tmux mit starten, tmux new bash
wird das erste Fenster eingefärbt, nachfolgende Fenster jedoch nicht.
Die Variable $ PS1 wird für scheinbar alle Aspekte außer dem Färben eines der Felder berücksichtigt.
Hat jemand irgendwelche Ideen?
PS1
Ihnen veröffentlichte Einstellung enthält keinen Befehl zum Ändern der Farben. Veröffentlichen Sie eine aktuelle Einstellung, die außerhalb von tmux funktioniert. Außerdem sollten Sie setzenPS1
in.bashrc
, nicht in.bash_profile
:.bash_profile
möglicherweise nicht ausgeführt werden, und die Einstellungen möglicherweise überschrieben später sein.Antworten:
Deine PS1 gibt mir auch Schwarz-Weiß-Ausgabe.
Wenn ich jedoch zu meinem zurückschalte, bekomme ich Farbe, sodass Sie in der Lage sein sollten, die Unterschiede herauszufinden, die ich verwende
git_branch ist eine Bash-Funktion, die ich habe:
Deine gegen meine:
Dies funktioniert unter OSX und Ubuntu genauso
quelle
Meine Lösung für dieses Problem war das Einstellen
force_color_prompt=yes
in meinem
.bashrc
. Jetzt hat meine tmux-Eingabeaufforderung Farbe.quelle
tmux
Folgendes angeben: Sie müssen den Befehl ausführen und dann innerhalb einer tmux-Sitzung ausführensource ~/.bashrc
. Sie müssen dies in jedem Panel tun.Auf meinem Computer besteht die Lösung darin, hinzuzufügen
zu
~/.tmux.conf
.quelle