Re: bash prompt光标定位错误
高超 wrote:
> Yunfeng Wang wrote:
>
>> 在 06-4-10,高超<achaoge@163.com> 写道:
>>
>>
>>> Yunfeng Wang wrote:
>>>
>>>
>>>> 唉,发到水木上被大水淹了,到这儿向xd们讨教一下,看能解决不
>>>>
>>>> 使用\[ \]将PS1中的非打印字符串(如\e[0m之类)包裹起来,会在特定情况下
>>>> 出现光标定位错误
>>>>
>>>> $PS1='$'
>>>> $echo -n abc # 输出abc后不换行
>>>> abc$
>>>> ^ # ^所指处为光标位置,正确
>>>> # web上看因字体的缘故可能没对齐,term下是正确的
>>>> $PS1='\[\e[0m\]$'
>>>> $echo -n abc
>>>> $bc$
>>>> ^ # 光标定位错误
>>>> $PS1='\[\e[0m\]123$'
>>>> 123$echo -n abc
>>>> abc123$
>>>> ^ # 正确
>>>>
>>>> 总结起来,如果\[ \]包裹的字符数(\e只算一个字符)超过其余的正常字符数,
>>>> 就会出现光标定位错误,表现为在正常输出字符串abc以及$PS1后光标退回行首
>>>> 并再次输出$PS1,从而将先前的输出部分覆盖
>>>>
>>>> $ echo $BASH_VERSION
>>>> 3.1.11(1)-release
>>>>
>>>>
>>>>
>>> 重复了一下你的过程,没有重现你说的问题
>>> $echo $BASH_VERSION
>>> 3.00.16(1)-release
>>>
>>>
>> 嗯,我试了一下bash v3.0,的确没有问题,那么看来是3.1的问题喽?
>> 麻烦xd也测试一下3.1,做个确认
>>
>>
> Etch: 确实存在问题
> echo $BASH_VERSION
> 3.1.5(1)-release
>
FreeBSD 6.0: 同样的问题,3.0正常,3.1有问题
-----------------
echo $BASH_VERSION
3.00.16(1)-release
-----------------
-----------------
echo $BASH_VERSION
3.1.10(1)-release
-----------------
Reply to: