Bash 提示覆盖当前行

Bash 提示覆盖当前行

我在这里遇到了与此线程类似的问题,命令行覆盖了该行,而我的向上箭头覆盖了所有文本。

终端提示未正确换行

当我跑步时

$ shopt  | grep checkwinsize
checkwinsize    on

看来这个问题是由于没有包装我的 bashrc 的 ps1 部分的正确部分引起的。 [] 中的脚本。我尝试遵循其他线程中的解释,但似乎没有帮助。

这是我的 bashrc 的一部分。脚本。

force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # We have color support; assume it's compliant with Ecma-48
    # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
    # a case would tend to support setf rather than setaf.)
    color_prompt=yes
    else
    color_prompt=
    fi
fi

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

我的bashrc有什么问题吗?哪个脚本导致了这个问题?

我正在运行 Ubuntu 16.04.4 Cinnamon 版本 3.6.7 和 4.13.0-36-generic 内核。

谢谢。

答案1

我无法重现此内容或看到您的脚本有任何问题,尽管我可能遗漏了一些东西。

我首先要确保问题实际上出在 bashrc 的这一部分。运行“echo $PS1”以检查提示是否在其他地方被修改。为了确定,运行后看看问题是否仍然出现:

bash -noprofile -norc
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

如果问题仍然存在,罪魁祸首可能是您的终端模拟器。检查“$TERM”的值对于您使用的终端仿真器是否正确,然后尝试使用其他仿真器。您也可以尝试重新初始化终端并手动设置 PS1。假设您正在使用 xterm:

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

相关内容