bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Prompt messed up if PS1 contains ANSI escape sequences


From: Gioele Barabucci
Subject: Re: Prompt messed up if PS1 contains ANSI escape sequences
Date: Thu, 7 Sep 2023 16:03:39 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0

On 07/09/23 15:50, Greg Wooledge wrote:
On Thu, Sep 07, 2023 at 03:46:23PM +0200, Gioele Barabucci wrote:
On 07/09/23 15:00, alex xmb ratchev wrote:
u have to \[ esc-seq \]
eg inside \[ and \]

PS1=$'\u\[\e[1m\]\h\[\e[0m- '

should display hostname bold

Thanks for the suggestion, but adding \] does not really fix the problem, it
just masks it in many cases (better than nothing).

The \[ \] wrappings are required.  They're not "masking" the problem.
Your prompt is literally set incorrectly without them.

Agreed that \] is required. With "masking" I mean that the use of \] prevents the problem I'm referring to from showing up easily. But the problem is still there even when \] is used.

The following snippet shows that, even with the final \], Bash produces the same erroneous output and miscalculates the cursor position (it just needs a longer prompt):

    $ long_name="$(printf 'abcdef0123456789/%.0s' {0..20})"
    $ mkdir -p /tmp/$long_name
    $ cd /tmp/$long_name
    $ PS1=$'\n\[\e[1m\]\w\[\e[m\] \$ '

    Now press the up arrow, then the down arrow)

Regards,

--
Gioele Barabucci



reply via email to

[Prev in Thread] Current Thread [Next in Thread]