17

When I open up Terminal (on Mac OS X 10.5.8) and type a long command line: alt text

...the text doesn't go to the next line when it wraps around: alt text alt text

Also, sometimes when I type a command and then backspace (or up-arrow or ^U): alt text

...the entire line isn't erased and I can't backspace beyond a certain point: alt text alt text

Is this a known bash bug (on Mac OS X)? Is there a fix?

Update: Juliano was correct, the problem was caused by incorrectly delimiting a console code sequence in my PS1 variable. Changing:

export PS1='\[\033[1;34m\]\$\]\033[0m\] '

...in my .bashrc to:

export PS1='\[\033[1;34m\]\$\[\033[0m\] '

...solved the problem.

4
  • 1
    +1 for the most beautiful screen shots of a terminal screen I have ever seen. Nov 10, 2009 at 21:10
  • 2
    the two code lines you showed in your update are identical.
    – Magne
    Oct 2, 2013 at 12:27
  • Good catch, @Magne. It's been four years since I looked at this, so I don't remember specifically, but I assume the "before" was missing a \]. Oct 2, 2013 at 22:01
  • they are not identical: the 1st one has \] instead of '[`
    – Ohad Cohen
    Nov 3, 2015 at 13:53

2 Answers 2

21

The behavior is consistent to having console codes in your prompt (to change the color, etc.) and not properly marking then so that bash knows that they are invisible.

Before anything else, do this:

PS1='\w\$ '

And then try again. If the problem is solved, then my suspicions are correct.

Each console code sequence must be delimited with \[ and \] in the PS1 variable. They tell bash that whatever is in there doesn't move the cursor position. Read the bash manual for more information.

2
  • That was the problem. Thank you! I'll update my question with details. Nov 10, 2009 at 19:58
  • And what if it doesn't solve the issue?
    – levesque
    Mar 22, 2017 at 1:51
4

To help generate a sanitized prompt try http://www.kirsle.net/wizards/ps1.html it's pretty awesome. Just be careful with brackets in your prompt, it tries to escape them or something.

2
  • +1 While @Juliano's answer is technically correct, this link here is what sets the correct tput commands - which has fixed newline, `` newline and other "history + backspacing" fixes that using other ANSI codes could not fix. Dec 3, 2014 at 18:59
  • that tool is awesome! Thank you for sharing it.
    – szeitlin
    Apr 5, 2021 at 21:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.