下面是我当前的 PS 字符串.bashrc
PS1='${debian_chroot:+($debian_chroot)}\[\033[00;37m\]\u@\h\[\033[01;32m\]:\[\033[01;34m\]\w\[\033[01;31m\] $(parse_git_branch)\[\033[00m\]\$
效果很好
但由于颜色有限,编写单一颜色代码非常困难;因此创建一些变量并尝试使用它们,如下所示
RED='\[\033[01;31m\]'
YELLOW='\[\033[01;33m\]'
GREEN='\[\033[01;32m\]'
BLUE='\[\033[01;34m\]'
GREY='\[\033[01;37m\]'
WHITE='\[\033[00m\]'
PS1='${debian_chroot:+($debian_chroot)}${GREY}\u@\h${GREEN}:${BLUE}\w${RED} $(parse_git_branch)${WHITE}$ '
但这不起作用并显示字符本身
那么,我们如何在这里使用变量?
附加查询
我们可以使用哪些其他颜色代码?
有人用;
\e
代替\033
,这样也能用吗?任何参考资料都会有帮助
答案1
首先,一般来说,避免使用大写字母作为您自己的 shell 变量名。按照惯例,全局环境变量是大写的,因此如果您也将自己的变量也大写,则会导致命名冲突和奇怪的错误。
但这里真正的问题是您将变量放在单引号中,这意味着它们不会被展开。请尝试以下方法:
red='\[\033[01;31m\]'
yellow='\[\033[01;33m\]'
green='\[\033[01;32m\]'
blue='\[\033[01;34m\]'
grey='\[\033[01;37m\]'
white='\[\033[00m\]'
PS1="${debian_chroot:+($debian_chroot)}${grey}\u@\h${green}:${blue}\w${red} $(parse_git_branch)${white}$ "
注意我是如何使用的"
。PS1="..."
这是重点部分。单引号中的变量是受保护的:
$ var="foo"
$ echo '$var'
$var
但在双引号中,它们会被展开:
$ echo "$var"
foo