题
我在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}\]"
这似乎有效 使先前命令工作所需的括号。
不隶属于 StackOverflow