8 votes

Comportement étrange dans le Terminal avec un .bash_profile personnalisé

Il est difficile de décrire ce comportement, mais voici un court extrait :

http://www.youtube.com/watch?v=9KqHBA94FPI

En fait, lors de la saisie de commandes multi-lignes, à la fin de la première ligne, le bloc d'insertion revient au début de la première ligne, écrit par-dessus la première ligne, puis continue normalement sur la deuxième, troisième, etc. ligne. Lors de la suppression, il me permet de supprimer la commande entière, plus les espaces vides sur la ligne au-dessus de la commande (je l'ai configuré pour que les commandes soient insérées après une ligne contenant des informations sur l'utilisateur@host/Directory. Il me permet même de supprimer la dernière partie du répertoire et de l'hôte que j'ai décrits ci-dessus. Désolé, je n'arrive pas à expliquer tout ça, la vidéo fera mieux l'affaire.

Voici le contenu de mon .bash_profile :

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

12voto

Tundey Points 2145

Vous devez entourer vos caractères non imprimables (dans ce cas, vos séquences d'échappement ANSI) de séquences d'échappement bash : \[ y \] . De cette façon, bash saura que les caractères inclus ne sont pas visibles, c'est-à-dire qu'ils ne prennent pas d'espace, c'est-à-dire qu'ils ne doivent pas être inclus dans le calcul de la longueur des mots utilisé par le line-wrapper.

en d'autres termes, changez votre PS1 définition :

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

à :

export PS1="\[\e[31m\]\u\[\e[0m\]@\[\e[34m\]\h\[\e[33m\]\w\n \$ \[\e[0m\] "

Et voici le même PS1 pour une lecture humaine uniquement, avec une lisibilité peut-être améliorée (caractères d'échappement ANSI sur la ligne inférieure, caractères d'échappement bash au milieu et caractères d'impression sur la ligne supérieure).

          \u          @          \h          \w\n \$
\[      \]  \[     \] \[      \]  \[      \]        \[     \] 
  \e[31m      \e[0m     \e[34m      \e[33m            \e[0m    

Pour en savoir plus :

0 votes

C'est parfait, ça a résolu mon problème. Merci beaucoup pour votre aide !

0 votes

Blair, bienvenue à Ask Different ! Si vous aimez une réponse à votre question, veuillez la voter et l'accepter.

0voto

user43414 Points 1

Je suis tout le monde,

J'ai eu des problèmes similaires et j'ai trouvé une solution en changeant ma variable PS1 d'origine à une variable très simple, juste mon nom en fait : export PS1=Alex

Maintenant mon terminal n'a plus de comportement étrange.

J'espère que ça va aider.

Alex (sur Mac Lion 10.8)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X