Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bash prompt line wrapping issue

Newbie question, I recently changed my PS1 into this:

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
YELLOW="\[\033[0;33m\]"
CYAN="\[\033[0;36m\]"

export PS1="\[$RESET\]\u@\h:\[$CYAN\]\w\[$YELLOW\]\$(__git_ps1)\[$NORMAL\] \$ "

But now I get a line wrapping error. I created a gif to explain the problem:

enter image description here

Any ideas what might be wrong?

like image 654
hampusohlsson Avatar asked Sep 01 '13 14:09

hampusohlsson


2 Answers

I think you're double-quoting your escape codes with [ and ]. Try this one:

export PS1="$RESET\u@\h:$CYAN\w$YELLOW\$(__git_ps1)$NORMAL \$ "
like image 107
konsolebox Avatar answered Sep 24 '22 07:09

konsolebox


The wrapping error occurs whenever a non-printing character is not escaped (such as the escape codes that change the prompt color). It also occurs when the locale is set to something that does not understand unicode characters and the prompt includes them. An example would be non-breaking spaces. When the locale is "C" and there are unicode characters in the prompt, the shell thinks more characters are being printed than truly are, and the prompt wraps around prematurely.

like image 32
bu11d0zer Avatar answered Sep 21 '22 07:09

bu11d0zer