当路径包含 unicode(希腊语)字符时,Bash 提示符换行被破坏

当路径包含 unicode(希腊语)字符时,Bash 提示符换行被破坏

当路径太长而无法在终端上显示并且出现换行时,以下提示将被破坏,并且您无法正确看到键入的内容。请参阅下面的屏幕截图:

在此输入图像描述

.bashrc这些是设置的内容PS1,这是Ubuntu默认提供的。

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

$PS1的值为

echo "$PS1"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 

有什么办法可以解决吗?

我已经看到了其他几个类似的问题,建议的解决方案是将有问题的部分包含在\[ \]或 set 中checkwinsize,但在我的情况下都不起作用。

如果有人想用路径进行测试,则如下:

/home/dimitriv/Dropbox/personal/kastoria/2018-2019/προγραμματισμός στο διαδίκτυο/newslides

答案1

PS1快速修复可能是用脚本替换窗口标题设置部分PROMPT_COMMAND

case "$TERM" in ... esac您的块内.bashrc,将 替换PS1=...

PROMPT_COMMAND='printf %b "\e]0;${debian_chroot:+($debian_chroot)}$USER@$HOSTNAME:$PWD\a"'

相关内容