最可能的原因是格式不正確的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