为什么PS1中的换行符会在Git for Windows bash中引发语法错误?

时间:2016-03-09 16:21:02

标签: windows git bash

我正在尝试在Git for Windows Bash提示符中设置我的用户提示。这是一个非常简单的提示:

# \@                 Prints the time: 11:14 AM
# \w                 Prints the full cwd path
# $(__git_ps1 ...)   Prints the current git branch

PS1='\n[\@] \w $(__git_ps1 "(%s)") \$ '

只要我在混音中添加第二个换行符,我就会收到以下错误:

 bash: command substitution: line 1: syntax error near unexpected token ')'
 bash: command substitution: line 1: `__git_ps1 "(%s)")'

抛出此错误的提示的变体是(注意$提示符之前的换行符):

PS1='\n[\@] \w $(__git_ps1 "(%s)") \n\$ '

我认为导致此问题发生的__git_ps1例程必定存在问题,但我并不理解。这里有什么简单的东西我不知道吗?

1 个答案:

答案 0 :(得分:2)

因此,事实证明这有already been answered

通过使用quoted string expansion,可以避免此问题:

PS1='\n[\@] \w $(__git_ps1 "(%s)")'$'\n\$ '

令我惊讶的是,在2016年,Bash仍然使用这种糟糕,可怕的语法。必须有更好的方法。