当我打开终端(在 Mac OS X 10.5.8 上)并输入一个长命令行时:
...文本换行时不会转到下一行:
另外,有时当我键入命令然后按退格键(或向上箭头或 ^U)时:
...整行并没有被删除,而且我无法在某个点之后进行退格:
这是一个已知的 bash 错误(在 Mac OS X 上)吗?有修复方法吗?
更新: 朱利亚诺是正确的,问题是由于错误地界定了 PS1 变量中的控制台代码序列而导致的。更改:
export PS1='\[\033[1;34m\]\$\]\033[0m\] '
...在我.bashrc
的:
export PS1='\[\033[1;34m\]\$\[\033[0m\] '
...问题解决了。
答案1
该行为与在提示中包含控制台代码(更改颜色等)并且没有正确标记以便 bash 知道它们是不可见的一致。
首先,请执行以下操作:
PS1='\w\$ '
然后重试。如果问题解决了,那么我的怀疑是正确的。
\[
每个控制台代码序列必须用 PS1 变量中的和分隔\]
。它们告诉 bash,无论其中的内容是什么,都不会移动光标位置。请阅读 bash 手册以了解更多信息。
答案2
为了帮助生成经过清理的提示,请尝试http://www.kirsle.net/wizards/ps1.html这真是太棒了。不过要小心提示中的括号,它会试图转义它们或做其他事情。