|
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 boldThanks 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
[Prev in Thread] | Current Thread | [Next in Thread] |