git config --global返回"意外令牌附近的语法错误`)'"错误

时间:2015-11-14 20:03:51

标签: git command-prompt

当我尝试:

$ git config --global user.name "Me"

它返回给我这个错误:

bash: command substitution: line 1: syntax error near unexpected token `)'
bash: command substitution: line 1: `__git_ps1)'

我在 Windows 7 C:\ opt \ git-2.6.3 上运行 Git 2.6.3 和我的 .gitconfig 最初是空的。

但是,除了这个错误之外,它还充满了:

[user]
name = Me

并且,对于我键入的每个命令,提示符都返回相同的错误...

我该如何解决这个问题?

感激,

2 个答案:

答案 0 :(得分:6)

我还跟踪了$(__ git_ps1)

之后的\ n

简化PS1提示:

这有效:

PS1='$(__git_ps1)'

这不;它给出了语法错误消息:

PS1='$(__git_ps1)\n'

但是,在ASCII 中给出\ n 可以工作:

PS1='$(__git_ps1)\012'

有趣的是,在\ 012后你可以再次使用\ n:

PS1='$(__git_ps1)\012\n'

注意:我在PS1中发现了其他错误;我不知道他们以前是否在那里,当我更新git时,或者可能(可能!)来自我在遥远的过去的混乱中发生了一些奇怪的事情......

我的PS1(今天早些时候更新git之后)是:

PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[33m\]\w \[\033[1m\]\[\033[31m\]$(__git_ps1)\[\033[0m\]\n$ '

这给出了语法错误,但第一个转义序列也是错误的:

wrong!   PS1='\[\033]0;$MSYSTEM ...
right!   PS1='\[\033[0;m$MSYSTEM ...
<0> \ 033后面的支架&#39; m&#39;失踪了...

我纠正的PS1现在是:

PS1='\[\033[0;m$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]\n\[\033[32m\]\u@\h \[\033[33m\]\w \[\033[1m\]\[\033[31m\]$(__git_ps1)\[\033[0m\]\012$ '

这给出了我的提示:

MINGW64:/c/Users/aweiner       <-white
aweiner@ajw-sony ~             <- green, dir in yellow, git branch name in red
$

(是的,它的方式很冗长,所以我可能会把它弄得更糟......)

答案 1 :(得分:5)

这是git bash解释器的一个问题。

我已经在我的.profile中将PS1的定义一分为二,并且发现如果在\n之后某处有$(blablabla),则会出现问题。 甚至“blablabla”也绝对是无辜的,比如echo helloworld

我的解决方案是使用另一个函数发出换行符:

function echonewline() {
  echo -e "\n "
  # last line must be non-empty - I emit a whitespace
}

PS1=\n...all...stuff...$(__git_ps1)...colors...$(echonewline) $
# newlines before first function call are welcome.

看起来很奇怪,但确实有效。

Git bash v.2.8.2 for Windows。