Chet Ramey <[EMAIL PROTECTED]> writes:
>> Machine Type: i486-pc-linux-gnu
>>
>> Bash Version: 3.2
>> Patch Level: 39
>> Release Status: release
>>
>> Description:
>>
>> \w in PS1 prompt string confuses bash when ending in \
>>
>> The standard prompt setting in ubuntu is
>> PS1="${debian_chroot:+($debian_chroot)[EMAIL PROTECTED]:\w\$"
>>
>> which seems harmless enough. However, if you do
>>
>> mkdir /tmp/chaos\\ ; cd /tmp/chaos\\
>>
>> the prompt display hopelessly confuses bash. At first it displays
>> nothing at all, then with repeated entries of RET fragments of color
>> ANSI sequences appear, like
>>
>> [EMAIL PROTECTED]:/tmp/xxx$ mkdir /tmp/chaos\\ ; cd /tmp/chaos\\
>> ]0;[EMAIL PROTECTED]: /tmp/[EMAIL PROTECTED]:/tmp/chaos\$
>> ]0;[EMAIL PROTECTED]: /tmp/[EMAIL PROTECTED]:/tmp/chaos\$
>
> Since bash doesn't output any of that by default, I suspect you have
> something in PROMPT_COMMAND that tries to write to an xterm title bar
> and is confused by the escape at the end of the prompt string.
Bingo. At my home machine, I don't have this effect. This comes (for
new users) from
/etc/skel/.bashrc
where we have
# If this is an xterm set the title to [EMAIL PROTECTED]:dir
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;[EMAIL PROTECTED]: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
And this is in the package bash-3.2-0ubuntu18
It would appear that the trailing backslash in combination with echo -e
combines with the backslash of \007 and leaves a literal 007 afterwards.
[EMAIL PROTECTED]:/tmp/xxx\$ echo "\007"
\007
[EMAIL PROTECTED]:/tmp/xxx\$ echo -e "\007"
[EMAIL PROTECTED]:/tmp/xxx\$ echo "${PWD/$HOME/~}\007"
/tmp/xxx\\007
[EMAIL PROTECTED]:/tmp/xxx\$ echo -e "${PWD/$HOME/~}\007"
/tmp/xxx\007
Since PWD can contain backslashes at arbitrary positions, echo -e is
clearly inappropriate here.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum