OS X终端中的Bash提示符已损坏

时间:2008-09-19 20:32:30

标签: macos bash unix

我在os X终端应用中使用bash,当我滚动浏览历史记录时,我的自定义$ PS1会中断。

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w\n\[${red}\$${NC}\]"

也试过了     PS1 =“$ {BLUE} \ u $ {CYAN} @ $ {RED} \ h $ {BLUE} \ w \ r \ n [$ {red} \ $$ {NC}]”

问题似乎出现在换行符中。我已经在Slackware上使用了这个bash提示,没有任何问题。

6 个答案:

答案 0 :(得分:8)

你需要围绕每个转义序列的[和];做$ BLUE等包括这些?如果没有,他们需要被这些电话括起来。

答案 1 :(得分:2)

为了避免这种“逃避”困难,因为你需要进一步发展变得更加复杂,这应该是一个开始成长的骨架:

function _my_prompt ()
{ 
  # magic goes here
  my_prmpt=.... 
}
PROMPT_COMMAND='_my_prompt'
PS1="[\$my_prmpt] \$"

答案 2 :(得分:2)

登录远程(debian)系统时遇到了同样的问题。由于.bashrc中的转义值都被很好地括起来,我做了一些谷歌搜索,发现原因可能是本地和远程系统上窗口大小的差异。添加

shopt -s checkwinsize

远程系统上的.bashrc解决了我的问题。

来源:http://forums.macosxhints.com/showthread.php?t=17068

答案 3 :(得分:0)

如果问题似乎与换行有关,请尝试将\ r \ n而不仅仅放在\ n中,看看它是否有所作为。

答案 4 :(得分:0)

我在你的PS1上遇到了同样的问题(在OS X上)。 如果我删除了\[\]

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w\n${red}\$${NC}"

这很好用。是否需要sqare括号?我从未使用过它们,但来自the docs

  

\[       开始一系列非打印字符。这可以用来   将终端控制序列嵌入到   提示。

     

\]       结束一系列非打印字符。

答案 5 :(得分:0)

我现在试过

PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w${RED}\r\n\$\[${blue}\]"

这似乎有效 使先前命令工作所需的括号。