Niedawno postanowiłem zmienić zmienną PS1, aby dostosować ją do całkiem ładnych kolorów Solarizowanych dla mojej przyjemności oglądania na terminalu. Gdy nie ma sesji tmux, wszystko jest świetnie! Tęcze, kucyki, jednorożce i wyróżniająca się zachęta! Fajne!
Problem leży jednak w tmux. Sprawdziłem, że wartość PS1 jest taka, jakiej się spodziewam i taka sama, jak wtedy, gdy tmux nie działa, a mianowicie \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]
.
Wszystkie moje aliasy itp. W moim .bash_profile również działają zgodnie z oczekiwaniami. tmux wyświetla również kolory bez incydentów, echo -ne "\033[1;33m hi"
zachowując się tak , jak się spodziewano gls --color
.
Obecny odpowiedni wiersz w moim export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
pliku .bash_profile to , chociaż pierwotnie szukałem skryptu znajdującego się w pliku .bash_prompt do obsługi niektórych warunków warunkowych itp. Próbowałem przywrócić prostszą wersję.
Wykonanie bash
spowoduje kolorowanie monitu, ale należy to zrobić w każdym okienku. export PS1=[that long string I've already posted]
nie będzie.
Mój plik .tmux.conf wygląda następująco:
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}"
Odpowiednie części .bash_profile:
export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
test -z "$TMUX" && (tmux attach || tmux new-session)
fi
Używam macOS Sierra, iTerm 2, wypróbowałem zarówno bieżącą wersję homebrew bash, jak i systemową (obecnie używa homebrew), tmux 2.4.
Umieściłem również touch testing_touch_from_bash_profile
w moim .bash_profile podczas sesji tmux z dwoma panelami, zabiłem jeden panel, otworzyłem panel i sprawdziłem, czy plik faktycznie został utworzony.
echo $TERM
zwraca xterm-256color
.
Upewniłem się, że kiedy wychodzę z Tmuxa, aby przetestować ustawienia, zmieniłem to, że wyszedłem z Tmux i że żaden proces tmux nie jest aktualnie uruchomiony w systemie ps -ax | grep tmux
.
Co dziwne, pozyskiwanie skryptu .bash_prompt zmienia również kolor, o ile robię to w ramach każdego panelu tmux.
Obejrzałem /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w i spróbowałem dodać flagę --login po wywołaniu bash w pierwszym wierszu z mojego .tmux.conf. Uruchomienie tmux z tmux new bash
spowoduje, że pierwszy panel zostanie pokolorowany, ale kolejne panele nie.
Zmienna $ PS1 jest honorowana za pozornie wszystkie aspekty oprócz kolorowania któregokolwiek z pól.
Czy ktoś ma jakieś pomysły?
PS1
opublikowanym ustawieniu nie ma polecenia zmiany kolorów. Opublikuj rzeczywiste ustawienie, które działa poza Tmux. Ponadto powinieneś ustawićPS1
w.bashrc
, a nie w.bash_profile
:.bash_profile
może w ogóle nie zostać wykonany, a ustawienia mogą zostać później zastąpione.Odpowiedzi:
Twój PS1 daje mi również czarno-biały obraz.
Jednak przejście z powrotem do mojego daje mi kolor, więc powinieneś być w stanie dowiedzieć się inaczej, używam
git_branch jest funkcją bash, którą mam, która jest:
Twój vs. Mój:
To działa tak samo w OSX i Ubuntu
źródło
Moim rozwiązaniem tego problemu było ustawienie
force_color_prompt=yes
w moim
.bashrc
. Teraz mój monit Tmux ma kolor.źródło
tmux
, a następnie uruchomić sesję tmuxsource ~/.bashrc
. Musisz to zrobić w każdym panelu.Na mojej maszynie rozwiązaniem jest dodanie
do
~/.tmux.conf
.źródło