Di recente ho deciso di cambiare la mia variabile PS1 per adattarmi ad alcuni bei colori solarizzati per il mio piacere di visualizzazione terminale. Quando non sei in una sessione tmux, tutto è fantastico! Arcobaleni, pony, unicorni e un prompt distintivo! Freddo!
Tuttavia, il problema è all'interno di tmux. Ho verificato che il valore di PS1 è quello che mi aspetto che sia e lo stesso di quando tmux non è in esecuzione, vale a dire \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]
.
Tutti i miei alias, ecc. Nel mio .bash_profile funzionano anche come previsto. tmux mostra anche i colori senza incidenti, come echo -ne "\033[1;33m hi"
si comporta come previsto gls --color
.
L'attuale riga pertinente nel mio .bash_profile è export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
, sebbene in origine stavo provando uno script situato in un file .bash_prompt per gestire alcuni condizionali, ecc. Ho provato a tornare alla versione più semplice.
L'esecuzione bash
provoca la colorazione del prompt, ma deve essere eseguita in ciascun riquadro. export PS1=[that long string I've already posted]
no.
Il mio .tmux.conf è il seguente:
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}"
Parti rilevanti di .bash_profile:
export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
test -z "$TMUX" && (tmux attach || tmux new-session)
fi
Sto usando macOS Sierra, iTerm 2, ho provato sia l'attuale versione homebrew di bash che il sistema bash (attualmente utilizza l'homebrew), tmux 2.4.
Ho anche inserito il touch testing_touch_from_bash_profile
mio .bash_profile durante una sessione tmux con due riquadri, ucciso un riquadro, aperto un riquadro e verificato che il file fosse effettivamente creato.
echo $TERM
ritorna xterm-256color
.
Mi sono assicurato che quando sono uscito da tmux per testare le modifiche alle modifiche, sono uscito da tmux e che nessun processo di tmux è attualmente in esecuzione sul sistema tramite ps -ax | grep tmux
.
Stranamente, l'approvvigionamento dello script .bash_prompt cambia anche il colore fintanto che lo faccio all'interno di ciascun riquadro di tmux.
Ho guardato /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w e ho provato ad aggiungere il flag --login dopo la chiamata bash nella prima riga del mio .tmux.conf. L'avvio di tmux con tmux new bash
causerà la colorazione del primo riquadro, mentre i riquadri successivi no.
La variabile $ PS1 è stata onorata per apparentemente tutti gli aspetti tranne la colorazione di uno dei campi.
Qualcuno ha qualche idea?
PS1
impostazione che hai pubblicato non ha alcun comando per cambiare i colori. Pubblica un'impostazione effettiva che funziona al di fuori di tmux. Inoltre, si dovrebbe impostare PS1
in .bashrc
, non in .bash_profile
: .bash_profile
potrebbe non ottenere eseguito a tutti, e le impostazioni potrebbero essere sovrascritte in seguito.