\[...\]
括起提示符中不可打印的部分。大多数情况下,这意味着需要将转义序列(如\e[1;30m
)写成\[\e[1;30m\]
。您的提示符中有一些\[
和\]
,但它们的位置不正确,这让bash非常困惑。找到您的提示符中所有可打印和不可打印的部分是很复杂的,但我认为以下内容是正确的:export PS1='\[\e[1;30m[\e[\e[1;30m\e[1;33m\] \u@\H \[\e[1;32m\]\w\[\e[0m\] \[\e[1;30m\]]\n[ \[\e[1;31m\]\T\[\e[0m\e[1;30m\] ] > \[\e[37m\]'
\[
...\]
中。 - pbojinov\[
和\]
来包围颜色转义序列,当使用向上箭头选择之前的命令时,光标位置会失去同步。 - Brent Faust