J'ai récemment décidé de changer ma variable PS1 pour accueillir de jolies couleurs Solarized pour mon plaisir de visualisation du terminal. Lorsqu'il n'est pas dans une session tmux, tout est super! Arc-en-ciel, poneys, licornes et une invite distincte! Cool!
Le problème est cependant dans tmux. J'ai vérifié que la valeur de PS1 est ce que je m'attends à ce qu'elle soit et la même que lorsque tmux ne fonctionne pas, à savoir \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]
.
Tous mes alias, etc. dans mon .bash_profile fonctionnent également comme prévu. tmux affiche également des couleurs sans incident, comme il echo -ne "\033[1;33m hi"
se comporte comme prévu gls --color
.
La ligne pertinente actuelle dans mon .bash_profile est export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"
, bien qu'à l'origine je cherchais un script situé dans un fichier .bash_prompt pour gérer certaines conditions, etc. J'ai essayé de revenir à la version plus simple.
L'exécution bash
provoquera la coloration de l'invite, mais doit être effectuée dans chaque volet. export PS1=[that long string I've already posted]
Ne fera pas.
Mon .tmux.conf est le suivant:
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}"
Parties pertinentes de .bash_profile:
export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
test -z "$TMUX" && (tmux attach || tmux new-session)
fi
J'utilise macOS Sierra, iTerm 2, j'ai essayé à la fois la version homebrew actuelle de bash et le système bash (il utilise actuellement l'homebrew), tmux 2.4.
J'ai également placé touch testing_touch_from_bash_profile
dans mon .bash_profile lors d'une session tmux avec deux volets, tué un volet, ouvert un volet et vérifié que le fichier a bien été créé.
echo $TERM
retourne xterm-256color
.
Je me suis assuré qu'en quittant tmux pour tester les changements de paramètres, j'ai quitté tmux et qu'aucun processus tmux n'est actuellement en cours d'exécution sur le système via ps -ax | grep tmux
.
Curieusement, le sourcing du script .bash_prompt change également la couleur tant que je le fais dans chaque volet tmux.
J'ai regardé /programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w et essayé d'ajouter le drapeau --login après l'appel bash dans la première ligne de mon .tmux.conf. Le lancement de tmux avec tmux new bash
entraînera la coloration du premier volet, mais pas les volets suivants.
La variable $ PS1 est honorée pour apparemment tous les aspects sauf la colorisation de l'un des champs.
Quelqu'un a des idées?
PS1
paramètre que vous avez publié n'a aucune commande pour changer les couleurs. Publiez un paramètre réel qui fonctionne en dehors de tmux. En outre, vous devez définirPS1
in.bashrc
, not in.bash_profile
: il se.bash_profile
peut que l'exécution ne soit pas exécutée du tout et que les paramètres puissent être remplacés ultérieurement.Réponses:
Votre PS1 me donne également une sortie en noir et blanc.
Cependant, revenir au mien me donne de la couleur, vous devriez donc être en mesure de comprendre les différents, j'utilise
git_branch est une fonction bash que j'ai:
Le vôtre contre le mien:
Cela fonctionne de la même manière sur OSX et Ubuntu
la source
Ma solution à ce problème était de définir
force_color_prompt=yes
dans mon
.bashrc
. Maintenant, mon invite tmux a une couleur.la source
tmux
, puis d'exécuter une session tmuxsource ~/.bashrc
. Vous devez le faire dans chaque panneau.Sur ma machine la solution est d'ajouter
à
~/.tmux.conf
.la source