我想使用 Git-completion.bash 功能之一,但我无法自定义我想要的外观。这是我的 .bash_profile 的相关部分:
source ~/.git-completion.bash
function prompt
{
local WHITE="\[\033[1;37m\]"
local GREEN="\[\033[0;32m\]"
local CYAN="\[\033[0;36m\]"
local GRAY="\[\033[0;37m\]"
local BLUE="\[\033[0;34m\]"
export PS1="
${GREEN}\u${CYAN}@${BLUE}\h ${CYAN}\w $(__git_ps1 '(%s)') ${GRAY}
$ "
}
prompt
并且它不显示分支名称。
但是,如果我将上面的导出 PS1 替换为下面的导出 PS1,它将按预期工作:
export PS1='\w$(__git_ps1 "(%s)") > '
我猜这是一些撇号/引号问题。
我应该如何更正第一个版本才能使其正常工作?
正确引用的技巧是将所有内容都用双引号引起来,除了$(__git_ps1 "(%s)")
,它是单引号的。
source ~/.git-completion.bash
function prompt
{
local WHITE="\[\033[1;37m\]"
local GREEN="\[\033[0;32m\]"
local CYAN="\[\033[0;36m\]"
local GRAY="\[\033[0;37m\]"
local BLUE="\[\033[0;34m\]"
export PS1="
${GREEN}\u${CYAN}@${BLUE}\h ${CYAN}\w"' $(__git_ps1 "(%s)") '"${GRAY}"
}
prompt
另一种解决方案是替换$(
with \$(
在问题的代码中。
背景信息:发生两次替换:第一次替换在export PS1="..."
时间,以及稍后显示提示时。你想要执行__git_ps1
每次显示提示时,必须确保第一个替换保持不变$(...)
完好无损的。所以你要么写'$(...)'
or "\$(...)"
。这是我提出的解决方案背后的两个基本想法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)