cd
当提示符(具体来说,我正在进入的路径)相当大时,我的 Ubuntu 默认终端会覆盖当前行,从而出现问题。我在这里密切关注这个问题:终端提示未正确换行和我的问题很相似,但不幸的是不一样。
具体来说,我通过注释和取消注释该文件来缩小原因.bashrc
,并发现以下几行导致了问题:
# 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
有没有一种特定的方法可以让我在不完全评论的情况下修复它,因为 Ubuntu 可能知道这是因为什么原因?
答案1
我不确定为什么在将 PS 提示设置为简单的内容时会得到相同的行为(即 PS1="[hostname] "'$LOGNAME:$PWD> ',但如果删除 .bashrc ,问题就会消失共。
对我来说,这表明您的 bashrc 中还有其他问题导致了麻烦。
我的建议是查看您已经设置的变量,尤其是您在 case 块 PS1 定义中使用的变量。
在您的问题中,您声明您想要的 PS1 是 user@host:dir。您编写的 PS1 定义过于复杂,并且当您尝试添加各种颜色和其他不必要的东西时编写不正确。
保持基础。要获得您想要的提示,您实际上只需要:
case "$TERM" in
xterm*|rxvt*)
PS1="\u@\h:\w> "
;;
*)
;;
esac
一旦你开始工作,你就可以添加你想要的所有彩色亮点和铃声。
我已经尝试了您给出的示例的各种突变,但无法产生您所描述的行为。为了更深入地研究它,我们需要查看完整的 bashrc,但我认为如果你将其精简并只掌握最基本的知识,直到你开始工作,你就可以完成它。从字面上看,删除 bashrc 中的所有内容,除了:
case "$TERM" in
xterm*|rxvt*)
PS1="\u@\h:\w> "
;;
*)
;;
esac
并一点一点地添加回来。我敢打赌,你有一个控制序列埋在某个地方,它以某种我们在你提供的简短代码片段中看不到的方式抛出终端。