我正在使用gnome-terminal
bash,当我有一个应该越过该行的命令时,它只会停留在同一行。因此,不要:
echo "abcdefghijklmnopqrstuvwxyz"
我会得到
opqrstuvwxyz""abcdefghijklmn
或者类似的东西。但是,如果我按下回车键,命令仍然有效。我相信这与我的 PS1 变量有关,但我不知道它出了什么问题。它在这里:
export PS1='\e[1;35m[\u:\w]\$\e[0;35m '
答案1
这似乎有点相关:
Bash 手册页建议将输出换行。这有助于 Bash 忽略不可打印的字符,以便正确计算提示符的大小
tput
。\[ \]
来源。
您的案例中的“tput
输出”如下所示:\e[1;35m
,\e[0;35m
(有两个单独的片段需要包装)。它们也可以写成 和\033[1;35m
。\033[0;35m
通常,您需要包装任何不可打印的序列。
我修改了你的PS1
:
export PS1='\[\e[1;35m\][\u:\w]\$\[\e[0;35m\] '
并且它对我来说似乎没有任何问题。