答案1
这是什么终端?将 的输出添加echo $TERM
到您的问题中。
如果您有以下情况,则可能会发生这种情况转义序列(由tput
) 在您的提示中没有被\[
和包围\]
。这些反斜杠括号告诉 Bash,转义序列不占用屏幕上的任何水平空间。如果没有它们包围转义序列,Bash 会将转义序列的每个字节都算作一个可见字符,这会在您查看命令历史记录时弄乱之前显示的命令。
要检查提示中是否有转义序列,请使用echo "$PS1" | od -c
并查找值为 的字符033
。如果发现这些字符,则说明提示中存在转义序列。
如果你033
在提示中发现
检查提示PS1
设置的位置:grep -i ps1 .*|less
然后编辑该文件(通常在)并用和.bashrc
包围该序列。\[
\]