OS X终端中的Bash提示损坏
时间:2020-03-06 14:27:44 来源:igfitidea点击:
我在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 no prob上使用了这个bash提示。
解决方案
如果问题似乎出在换行符上,请尝试将\ r \ n而不是仅放在\ n上,以查看是否有区别。
我在PS1上遇到了同样的问题(在OS X上)。
如果我删除\ [
和\]
PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w\n${red}$${NC}"
这很好。需要方括号吗?我从未使用过它们,但是从文档中可以看到:
\[ Begin a sequence of non-printing characters. This could be used to embed a terminal control sequence into the prompt. \] End a sequence of non-printing characters.
我现在尝试了
PS1="${BLUE}\u${CYAN}@${RED}\h${BLUE}\w${RED}\r\n$\[${blue}\]"
哪个似乎有效
使先前的命令起作用所需的括号。
每个转义序列都需要[和]。 $ BLUE之类的东西包括这些吗?如果没有,则需要将它们与这些电话括起来。
为了避免我们提示需要逃避的"逃避"困难变得更加复杂,这应该是开始发展的基础:
function _my_prompt () { # magic goes here my_prmpt=.... } PROMPT_COMMAND='_my_prompt' PS1="[$my_prmpt] $"
登录远程(Debian)系统时遇到同样的问题。由于.bashrc中所有的转义值都用括号括起来,因此我进行了一些谷歌搜索,发现原因可能是本地和远程系统上的窗口大小不同。新增中
shopt -s checkwinsize
远程系统上的.bashrc修复了我的问题。
来源:http://forums.macosxhints.com/showthread.php?t = 17068