最可能的原因是格式不正确的PS1
提示字符串。当您在提示中放置非打印控制字符时,必须用\[ … \]
环绕它们来告诉Bash在计算提示宽度时不计算它们。
如果宽度计算不正确,命令行显示可能会以多种方式混淆,包括您描述的方式。
在评论你写道:
这是我的.bash_profile出口PATH = $ {PATH}:/用户/ offirgolan/Android的SDK-的MacOSX /平台工具出口TERM =“xterm的色“alias ls =”ls -G“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]]> “
看起来你可能打算包括包围,因为没有一家领先的反斜杠所有额外的括号,但它们是不一致的,你的字符串甚至包括像不完整的转义序列。这很难说,如果有的话,你打算在提示中显示的支架,以及你希望他们是什么颜色,但你PS1
应该是更像
PS1='\[\e[1;30m\][\[\e[1;30m\e[1;33m\] \[email protected]\H [\[\e[1;32m\] \w\[\e[0m \e[1;30m\]]\n[ \[\e[1;31m\]\T\[\e[0m\e[1;30m\] ] > \[\e[37m\]'
专业提示:不要硬在你的提示中编码终端命令 - 它们不可移植,并且不适用于所有终端。相反,请使用tput
为当前终端选择适当的命令序列。例如
PS1="\[$(tput setaf 1)\]Red Text\[$(tput sgr0)\] \$ "
将以红色显示带有“红色文本”的提示符“红色文本$”。这也使得更容易查看\[ \]
括号是否正确,因为您没有丢弃字符串的文字转义字符,助记码tput
使得更容易找出正在发送的命令。
你正在使用哪个外壳? shell提示是否包含终端的任何说明?这是否仅发生在非常长的命令中(可能会结束)或全部? – 2012-07-17 02:40:49
使用Bash的Mac OS X终端。每一个长或短的命令都不会发生这种情况。 – 2012-08-06 20:16:50
这是我的。在.bash_profile 出口PATH = $ {PATH}:/用户/ offirgolan/Android的SDK-的MacOSX /平台的工具 出口TERM = “xterm中色” 别名LS = “LS -G” 出口PS1 =“\ e [1; 30m \] [\ e [1; 30m \] \ e [1; 33m \] \ u @ \ H \ [\ e [1; 32m \] \ w \ [\ e [0m \ [1; 30m \]] \ n [\ [\ e [1; 31m \] \ T [[30m \]]> \ e [37m \] “ 更好的安全 的umask 077 #our默认文本编辑器 #设定的默认文件/目录创建的保护,可能是Emacs在 出口EDITOR = emacs的 #better寻呼机超过 出口PAGER =少 #St andard backspace stty erase intr – 2012-08-06 20:20:21