#1 Le 18/03/2013, à 00:14
- compte supprimé
[Résolu] Problème dans bash après personnalisation du ~/.bashrc
Bonsoir,
Je me permet d'écrire cette demande d'aide car j'ai un petit soucis pas dramatique mais gênant quand on utilise souvent la console.
J'ai cherché sur des forums mais je ne trouve pas, sûrement car je ne sais pas trop comment formuler mon problème.
Alors je vais essayer d'expliquer ce bug ; j'ai personnalisé mon bashrc pour avoir un affichage en console coloré et sur 3 lignes, de la forme :
┌─[ date - heure ]
└──╼ nom@ordinateur : /chemin/du/dossier/courant
$ "commande bash"
Le bug est double :
- quand je remonte l'historique ou que je veux le modifier, les 10 premiers caractères sont ceux de la commande précédente et je ne peux voir les modif que je fais ; je dois faire à l'aveugle et faire un nettoyage d'écran [ctrl+L] pour voir correctement la commande.
(voir image jointe : premier cas, affichage normal d'une commande tapée en direct ; deuxième cas, bug lors d'un retour sur l'historique ou d'une correction apportée ; troisième cas, retour à la normal après un [ctrl+L]...)
- de plus, le problème est que quand ma ligne de commande fais plus d'une ligne l'affichage devient bugué est se met à cheval sur la ligne nom@ordi:chemin avec toujours ce même problème des 10 premiers caractères non visible.
Avez-vous une idée du problème qui se pose ?
Ca doit être dans le bashrc mais ou peut on dire de modifier le comportement du système lors de l'écriture/modification de commande bash ?
Voici une image qui illustre le problème (en rouge le bug d'affichage que je n'arrive pas à résoudre) :
Je vous joint mon ~/.bashrc :
# Dossiers en drwxf-x--- et Fichiers en -rw-r-----
umask 027
# Export pour SSH
export SSH_AUTH_SOCK=0
# don't put duplicate lines in the history. See bash(1) for more options
export HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
export HISTCONTROL=ignoreboth
# Avoid whitespaces
export HISTCONTROL=ignorespace
# Enable history appending instead of overwriting. #139609
shopt -s histappend
# les commandes seront confirmées avant d'être exécutées
shopt -s histverify
# check the window size after each command and, if necessary, update the values of LINES and COLUMNS.
shopt -s checkwinsize
# Auto "cd" when entering just a path
shopt -s autocd
# Bash users should make sure extglob is enabled to execute Functions
# It is enabled by default if using Bash completion
shopt -s extglob
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(lesspipe)"
force_color_prompt=yes
if [[ $- != *i* ]] ; then
# Shell is non-interactive. Be done now!
return
fi
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color)
PS1='${Environnement CHROOT : +($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \$ #'
;;
*)
PS1='${Environnement CHROOT : +($debian_chroot)}\u@\h:\w \$ '
;;
esac
if ${use_color} ; then
if [[ ${EUID} == 0 ]] ; then
PS1="$BIWhite\342\224\214\342\224\200[ $BICyan\d $BIWhite- $BIGreen\t $BIWhite]\n$BIWhite\342\224\224\342\224\200\342\224\200\342\225\274 $BIRed\u$BIYellow@$BIBlue\h $BIWhite: $BIYellow\w \n$BIWhite\$$Color_Off "
else
if [ -z "$SSH_TTY" ] ; then
[[ "$PS1" ]] && echo -e "\n$Purple$(fortune)$Color_Off\n"
export PS1="$BIWhite\342\224\214\342\224\200[ $BICyan\d $BIWhite- $BIGreen\t $BIWhite]\n$BIWhite\342\224\224\342\224\200\342\224\200\342\225\274 $BIRed\u$BIYellow@$BIBlue\h $BIWhite: $BIYellow\w \n$BIWhite\$$Color_Off "
else
if [ "$TERM" = "screen" ] ; then
[[ "$PS1" ]] && echo -e "\n$Purple$(fortune)$Color_Off\n"
export PS1="$BIWhite\342\224\214\342\224\200[ $BICyan\d $BIWhite- $BIGreen\t $BIWhite]\n$BIWhite\342\224\224\342\224\200\342\224\200\342\225\274 $BIRed\u$BIYellow@$BIBlue\h $BIWhite: $BIYellow\w \n$BIWhite\$$Color_Off "
else
[[ "$PS1" ]] && echo -e "\n$Purple$(fortune)$Color_Off\n"
PS1="$BIWhite\342\224\214\342\224\200[ $BIGreen\d $BIWhite- $BICyan\t $BIWhite]\n$BIWhite\342\224\224\342\224\200\342\224\200\342\225\274 $BBlue\u$BIYellow@$BIRed\h $BIWhite: $BIYellow\w \n$BIWhite\$$Color_Off "
fi
fi
fi
else
if [[ ${EUID} == 0 ]] ; then
PS1='[ \d - \t ] \u@\h:\w \n\$ '
else
PS1='[ \d - \t ] \u@\h:\w \n\$ '
fi
fi
Un grand merci d'avance pour votre aide, vos conseils et trucs et astuces...
Bonne soirée,
Benjam.
edit modo : merci de relire les règles du forum, ne pas abuser des couleurs et utiliser des miniatures.
Dernière modification par Baobab (Le 22/03/2013, à 16:49)
#2 Le 19/03/2013, à 05:47
- nesthib
Re : [Résolu] Problème dans bash après personnalisation du ~/.bashrc
Problème classique dû à une mauvaise gestion des couleurs et/ou du multiligne (je dirais les couleurs). Pour résumer bash compte le nombre de caractères qui composent ton invite mais du fait d'un mauvais échappement de tes couleurs ou multiples lignes il se plante dans le compte. Je ne sais pas si ce lien résoudra ton problème mais c'est en tout cas la piste à explorer : http://stackoverflow.com/questions/1133 … ping-issue
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 19/03/2013, à 09:22
- elendil
Re : [Résolu] Problème dans bash après personnalisation du ~/.bashrc
J'avais eu problème similaire avec Mac OS et c'était la trop vieille version de readline qui était en cause (le prompt fonctionnait parfaitement sous linux mais pas avec le Mac).
Mais en allégeant le PS1 tout est rentré dans l'ordre.
Du coup je me demande si ce n'était pas un problème d'échappement d'une couleur/retour de ligne comme le dit nesthib.
Hors ligne
#4 Le 19/03/2013, à 10:16
- compte supprimé
Re : [Résolu] Problème dans bash après personnalisation du ~/.bashrc
Ok
Merci beaucoup pour vos réponses et pour ces pistes.
Je vais regarder ca et je vous tiens au courant de mes avancées...
Bonne journée à vous.
Benjam.
#5 Le 22/03/2013, à 16:47
- compte supprimé
Re : [Résolu] Problème dans bash après personnalisation du ~/.bashrc
Bonjour,
Tout d'abord merci pour ces pistes qui m'ont bien aidé.
J'ai réglé le problème avec vos liens ; c'était bien un problème de caractère d’échappement nécessaire pour encadrer les couleurs souhaitées dans le terminal.
Voici la ligne PS1 fonctinnelle à remplacer partout dans le ~/.bashrc de mon premier post pour avoir un beau shell coloré, précédé d'une anecdote fortune :
[color=#2e2ef0][[ "$PS1" ]] && echo -e "\n$Purple$(fortune)$Color_Off\n"
PS1="\[$BIWhite\]\342\224\214\342\224\200[ \[$BIGreen\]\d \[$BIWhite\]- \[$BICyan\]\t \[$BIWhite\]]\n\[$BIWhite\]\342\224\224\342\224\200\342\224\200\342\225\274 \[$BIBlue\]\u\[$BIYellow\]@\[$BIRed\]\h \[$BIWhite\]: \[$BIYellow\]\w \n\[$BIWhite\]\$\[$Color_Off\] "[/color]
Ce qui donne :
"Texte Fortune"
┌─[ ven. mars 22 - 15:11:34 ]
└──╼ user@ordinateur : ~
$
Avec de jolies couleurs.
Merci encore, en espérant que cela puisse servir à d'autres.
Benjam.
Dernière modification par Baobab (Le 22/03/2013, à 19:35)