我在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提示,没有任何问题。
答案 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解决了我的问题。
答案 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}\]"
这似乎有效 使先前命令工作所需的括号。