Nous sommes le Sam 21 Juin, 2025 13:47
Supprimer les cookies

Bug de coloration du prompt bash

Au quotidien encore quelques soucis ?

Dim 11 Juin, 2006 21:00

Bonsoir tout le monde.

J'ai coloré mon prompt bash (version 3.1.17(1)-release (i486-pc-linux-gnu) sous Ubuntu) avec la ligne suivante :
Code: Tout sélectionner
PS1='\[\033[00m\]\u@\h\[\033[0;34m\]:\[\033[0;32m\]\w\[\033[0;37m\]\$\[\033[00m\] '


C'est très joli, par contre je rencontre un bug si le prompt ne s'affiche pas sur une nouvelle ligne, par exemple
Code: Tout sélectionner
perl -e "print 'Bonjour ';"



Au lieu d'avoir
Code: Tout sélectionner
Bonjour xavier@ubuntu:~/Desktop$


J'ai
Code: Tout sélectionner
xavier@ubuntu:~/Desktop$ esktop$

Comme s'il avait affiché la ligne correctement, puis serait revenu en début de ligne pour la réafficher, et du coup j'ai la fin de la ligne en double.

Visiblement, ça le fait chaque fois qu'il y a plus d'une couleur définie.

Est-ce qu'il y a un moyen de corriger ce bug ?

Merci d'avance :wink:
Calimo

Messages : 33

Lun 12 Juin, 2006 09:37

Ben je crois qu'il y a une faute de syntaxe dans ta variable PS1 et que c'est pour ça que ça foire.
moi j'ai ceci dans mon bashrc :
if [[ ${EUID} == 0 ]] ; then
# PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
PS1='\[\033[00m\][ \[\033[01;31m\]\u \[\033[00;37m\]@ \[\033[01;37m\]\h \[\033[00m\]] \[\033[00;36m\]\w \n\[\033[01;33m\]\$\[\033[00m\] '
else
# PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
PS1='\[\033[00m\][ \[\033[01;32m\]\u \[\033[00;37m\]@ \[\033[01;37m\]\h \[\033[00m\]] \[\033[00;36m\]\w \n\[\033[01;37m\]\$\[\033[00m\] '

fi

les caractères me semblent bien escapés, la différence que je constate est que avant les ; j'ai des 00 et non des 0 simples.
Peut-être que cela résoudra le problème.
timas

Messages : 62
Géo : /home (Belgique)

Lun 12 Juin, 2006 09:47

je ne sais pas si c'est un bug d'affichage mais je pense qu'il manque ] à la fin de ta variable PS1.
timas

Messages : 62
Géo : /home (Belgique)

Lun 12 Juin, 2006 17:47

timas a écrit:je ne sais pas si c'est un bug d'affichage mais je pense qu'il manque ] à la fin de ta variable PS1.

Effectivement, je ne sais pas comment j'ai pu rater mon copier-coller. :?
Voilà ce que j'ai vraiment :
Code: Tout sélectionner
PS1='\[\033[00m\]\u@\h\[\033[0;34m\]: \[\033[0;32m\]\w\[\033[0;37m\]\$\[\033[00m\] '


J'ai aussi essayé ça :
Code: Tout sélectionner
PS1='\[\033[00m\]\u@\h\[\033[34m\]: \[\033[32m\]\w\[\033[37m\]\$\[\033[00m\] '
Et c'est exactement pareil (idem en doublant les zéros de la première ligne)

Avec un retour à la ligne le problème n'existe plus... j'aimerais éviter si possible (je sais je suis chiant) :|

En tous cas merci pour votre attention :wink:
Calimo

Messages : 33

Mer 14 Juin, 2006 21:45

Bon, visiblement il y a un bug sur le forum, ça me déforme à chaque fois mon code...

Est-ce que ce sera bon cette fois ?

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;30m\]\u@\h\[\033[0;34m\]:\[\033[0;32m\]\w\[\033[0;37m\]\$\[\033[00m\] '


Bon, dans une citation ça passe on dirait...
J'ai essayé dans un bash 3.0 et ça fonctionne bien... ce serait un bug de la 3.1 ? :(
Calimo

Messages : 33

Sam 17 Juin, 2006 18:36

Bon, je n'ai pas abandonné. J'ai trouvé ça :
Code: Tout sélectionner
PS1='\033[00m\u@\h\033[34m:\033[32m\w\033[37m\$\033[00m '

Ça colore mon prompt comme je veux, et s'affiche correctement si la dernière commande n'a pas de retour à la ligne. Malheureusement, ce serait trop beau si ça ne provoquait pas un autre bug :cry:

Maintenant, si j'entre une ligne de commande qui est un peu longue, au lieu de se continuer à la ligne, elle reprend sur la même ligne en écrasant le reste de la commande. C'est encore moins utilisable que l'autre :?

Sinon, j'ai pu essayer dans Bash 3.0 (j'ai bash 3.1) et le bug n'y est pas :|
Calimo

Messages : 33

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit