Bash提示中的Git分支名称
我一直试图在我的 bash 提示符下获取 Git 状态,但没有任何成功。颜色变量有效,所以不是它们。这是我的 PS1 和解析函数。
PS1="${GREEN}ganymede@${BLUE}dawson:${ICYAN}W${RESET}${IYELLOW} $(parse_git_branch) $ "
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (.*)/ (1)/'
}
我的 PS1 缺少什么?
谢谢道森
回答
线路:
PS1="$anything"
或者:
PS1="$(command)"
这样写的手段:评价$anything现在或运行command现在,即在当时你设置的变量PS1。让我们假设$anythingorcommand打印hello. 最终结果是:
PS1=hello
之后你会得到的提示是常量 string hello。
PS1除其他外,您希望包含 string $(parse_git_branch)。这意味着您必须引用美元符号,例如:
PS1=$(parse_git_branch)
或者:
PS1="$(parse_git_branch)"
或者:
PS1='$(parse_git_branch)'
如果您愿意让所有 $var扩展都在以后进行,单引号方法既简单又有效。如果您希望现在进行一些扩展,请考虑,例如:
PS1="${GREEN}ganymede@${BLUE}dawson:${ICYAN}W${RESET}${IYELLOW} $(parse_git_branch) $ "
或者:
PS1="${GREEN}ganymede@${BLUE}dawson:${ICYAN}W${RESET}${IYELLOW} "'$(parse_git_branch) $ '
请注意,其中一些未引用的内容是“安全的”,因为在扩展期间保持不变。SPACE$SPACE$SPACE