Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I like to use a custom prompt (current path in blue) on my unix machine:

export PS1='\[\e[0;34m\]\w \$\[\e[m\] '

But when I try to use it on Mac's terminal it doesn't work: it fails to detect the end of the prompt and overwrites the prompt when I type commands. This also happens when I'm inputting a long command where it wraps over the same line instead of starting a new line.

I don't understand why this is the case since I use bash on both machines. Any suggestions on how to remedy this?

share|improve this question

migrated from Sep 8 '12 at 16:37

This question came from our site for professional and enthusiast programmers.

I'm not sure why you are getting different results, but the correct value should be

export PS1='\[\e[0;34m\]\w \$\[\e[m\] '

Non-printing characters should be enclosed in \[ \], so that bash can compute the correct length of the prompt on the screen (for cursor-positioning purposes).

share|improve this answer
Yes, export PS1='[\e[0;34m]\w \$[\e[m] ' is the value I'm using. I somehow miscopied it in my question. It doesn't work as I explained above. – mareks Sep 8 '12 at 15:13
It works for me. – Paul R Sep 8 '12 at 15:16
@mareks In your comment above, you again seem to be missing the backslash before the [ and ] that enclose the ANSI escape codes for the colors. \[\e[, not [\e[. – chepner Sep 8 '12 at 16:37

Try putting it in regular double quotes "" instead of these ' ' single quotes. Worked for me. Also works with iTerm as well as Mac OS X's terminal.

share|improve this answer

\[\e[ became [\e[ in the post when it wasn't formatted as code. Sorry about the confusion. I solved the problem by updating bash from 3.0 to 4.2 on my mac.

share|improve this answer

You must log in to answer this question.