Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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) :
bugbashterminal.th.jpg


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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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 smile :
         

[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)