2015-11-14 3 views
1

Когда я пытаюсь:мерзавец конфигурации --global возвращает "ошибка синтаксиса около неожиданной лексемы`) '" ошибка

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

возвращает мне эту ошибку:

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

Я бегу Git 2.6.3 на Windows 7 на C: \ opt \ git-2.6.3 и мой .gitconfig был - сначала - пустой.

Но, кроме этой ошибки, она была заполнена:

[user] 
name = Me 

, и для каждой команды, которую я тип, строка возвращает мне ту же ошибку ...

Как я могу это исправить ?

С благодарностью,

+0

Проблема не с мерзавцем , но с вашей оболочкой. Проверьте свой .bash_profile (или любой другой файл конфигурации). Кроме того, Stack Overflow на самом деле предназначен только для программирования вопросов. Вы должны задать такие вопросы на [Super User] (https://superuser.com). –

+0

Удалите файл .gitconfig и повторите попытку этой команды. Если вы все еще видите ошибку, это ваша оболочка, как сказал Лео. Если это так, я могу предложить повторно установить Git. – nick

+0

Кроме того, если вы специально не отметили опцию во время процесса установки Git, командная строка Windows по умолчанию, вероятно, не будет иметь полную функциональность. Убедитесь, что вы используете командную строку Git. – nick

ответ

2

Это проблема с переводчиком мерзавец Баш.

Я определил определение PS1 в моем .profile и обнаружил, что проблема возникает, если есть \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 для Windows.

1

Я также прослежен его к \ п следующие $ (__ git_ps1)

Упрощая PS1 приглашение:

Это работает:

PS1='$(__git_ps1)' 

Это не делает; он выдает сообщение об ошибке синтаксиса:

PS1='$(__git_ps1)\n' 

Однако, давая \ п в ASCII делает работу:

PS1='$(__git_ps1)\012' 

Интересно, что после \ 012 вы можете использовать \ п снова:

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

Примечание: Я нашел дополнительные ошибки в моем PS1; не уверен, были ли они там раньше, что-то странное произошло, когда я обновил git или, может быть, (возможно!) от моего беспорядка в далеком прошлом ...

Мой PS1 (после обновления мерзавца ранее сегодня) было:

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

Это дает синтаксическую ошибку, но и то, что первая последовательность выхода неправильно:

wrong! PS1='\[\033]0;$MSYSTEM ... 
right! PS1='\[\033[0;m$MSYSTEM ... 

скобка после \ 033 был назад и 'м' не хватает ...

Мой скорректированного PS1 теперь:

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

это дает мое приглашение как:

MINGW64:/c/Users/aweiner  <-white 
[email protected] ~    <- green, dir in yellow, git branch name in red 
$ 

(и да, это способ многословным, так что я, вероятно, возиться с ним еще немного ...)

Смежные вопросы