7

我在 os X Terminal 应用程序中使用 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 提示,没有问题。

4

6 回答 6

8

每个转义序列都需要 [ 和 ] ;$BLUE 之类的是否包括这些?如果没有,它们需要被这些调用括起来。

于 2008-09-19T21:48:56.877 回答
2

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

function _my_prompt ()
{ 
  # magic goes here
  my_prmpt=.... 
}
PROMPT_COMMAND='_my_prompt'
PS1="[\$my_prmpt] \$"
于 2009-12-16T01:32:45.463 回答
2

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

shopt -s checkwinsize

到远程系统上的 .bashrc 为我解决了这个问题。

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

于 2010-01-10T22:22:59.470 回答
0

如果问题似乎出在换行符上,请尝试使用 \r\n 而不是 \n 并查看它是否有所作为。

于 2008-09-19T20:33:57.913 回答
0

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

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

这很好用。需要方括号吗?我从未使用过它们,但来自文档

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

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

于 2008-09-19T21:11:47.230 回答
0

我现在已经尝试过

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

这似乎有效 使以前的命令起作用所需的括号。

于 2008-09-19T21:48:12.463 回答