Bash 提示中的 Git 分支名称

Daw*_*fer 0 git bash

我一直试图在我的 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)/'
}
Run Code Online (Sandbox Code Playgroud)

我的 PS1 缺少什么?

谢谢道森

tor*_*rek 5

线路:

PS1="$anything"
Run Code Online (Sandbox Code Playgroud)

或者:

PS1="$(command)"
Run Code Online (Sandbox Code Playgroud)

这样写的手段:评价$anything现在运行command现在,即在当时你设置的变量PS1。让我们假设$anythingorcommand打印hello. 最终结果是:

PS1=hello
Run Code Online (Sandbox Code Playgroud)

之后你会得到的提示是常量 string hello

PS1除其他外,您希望包含 string $(parse_git_branch)。这意味着您必须引用美元符号,例如:

PS1=\$\(parse_git_branch\)
Run Code Online (Sandbox Code Playgroud)

或者:

PS1="\$(parse_git_branch)"
Run Code Online (Sandbox Code Playgroud)

或者:

PS1='$(parse_git_branch)'
Run Code Online (Sandbox Code Playgroud)

如果您愿意让所有 $var扩展都在以后进行,单引号方法既简单又有效。如果您希望现在进行一些扩展,请考虑,例如:

PS1="${GREEN}ganymede@${BLUE}dawson:${ICYAN}\W${RESET}${IYELLOW} \$(parse_git_branch) $ " 
Run Code Online (Sandbox Code Playgroud)

或者:

PS1="${GREEN}ganymede@${BLUE}dawson:${ICYAN}\W${RESET}${IYELLOW} "'$(parse_git_branch) $ ' 
Run Code Online (Sandbox Code Playgroud)

请注意,其中一些未引用的内容是“安全的”,因为在扩展期间保持不变。SPACE$SPACE$SPACE