我在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 [$ {红色} \ {$$ NC}]"

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

有帮助吗?

解决方案

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

其他提示

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

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

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

shopt -s checkwinsize

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

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

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

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

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

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

  

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

     

<代码> \]       结束一系列非打印字符。

我现在试过

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

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

scroll top