2008-09-19 88 views
7

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

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

还试图 PS1 =“$ {BLUE} \ U $ {CYAN} @ $ {RED} \ H $ {BLUE} \ W \ r \ n [$ {红色} \ {$$ NC }]“

问题似乎在换行符。我已经在Slackware上使用了这个bash提示符。

+0

默认mac bash或macports bash? – kch 2008-09-19 21:14:36

回答

8

你需要[和]每一个转义序列;做蓝色之类的东西包括这些?如果不是,他们需要用这些电话括起来。

+0

似乎是最后一行所需要的。在之前的一行中并不需要。 – Milhous 2008-09-20 04:16:15

0

如果问题似乎与换行符一样,请尝试将\ r \ n代替\ n,然后查看它是否有所作为。

0

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

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

能正常工作。是否需要sqare括号?我从来没有使用过,但是从the docs

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

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

+0

我试过这个,但是当我使用前缀commad键,我得到一些残留 millermj @ Leonidas〜 $ find ./ -na – Milhous 2008-09-19 21:28:22

0

现在我已经试过

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

这似乎工作 ,使以前的命令工作所需的支架。

2

为了避免这样的“逃逸”为你提示需要困难evole更加复杂,这应该是启动上生长骨架:

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

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

禁用了javascript -s checkwinsize

对远程系统的.bashrc已经修复了这个问题对我来说。

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