Где именно указано Git Bash для Windows '?

Оба моих офисных и домашних компьютеров имеют Git Bash для Windows из того же источника (Git для Windows, который поставляется с TortoiseGit), но Git Bash запрос отличается на обеих машинах:

  • на офисном компьютере У меня /c/path (branch) все зеленые (это, как бы я хотел),
  • На домашнем компьютере у меня есть только путь (без ветки) и все белые.

До сих пор мне сказали, что это переменная PS1, содержащаяся в файле ~/.bashrc. Однако на обеих машинах эти файлы отсутствуют (выполнение notepad ~/.bashrc открывает пустой блокнот).

Я потерялся здесь. Если ~/.bashrc не существует, то откуда Git Bash "знает", что он должен отображать текущую ветку в зеленой подсказке? И почему то же самое не происходит на второй машине?

EDIT. Я также попытался сравнить содержимое папки c:\Program Files\Git\etc\ для обеих машин и содержимого файла Git Bash.vbs. На обоих компьютерах одинаково, поэтому я даже больше не знаю, как это может быть, что запрос Git Bash отличается на обоих компьютерах (и как это исправить).

Несколько ответов (например this, this и this) предложил мне, чтобы я искал файлы .bash_profile и .bash_prompt. К сожалению, эти два также отсутствуют на обоих моих компьютерах.

Точно, какой файл решает об этом под Windows 7? Где еще я должен искать и что должно быть значение переменной PS1, чтобы текущая ветвь отображалась в зеленом приглашении на обеих машинах?

Ответы

Ответ 1

Git В Windows почти всегда используется оболочка bash. Таким образом, это не Git, устанавливающее подсказку столько, сколько делает bash.

Есть два способа установить подсказки в Bash. Одна из них - это команда PS1, которая довольно гибкая, но ограничена определенным набором последовательностей escape-символов. К сожалению, информация Git не является одной из тех escape-последовательностей (хотя я подозреваю, что это произойдет когда-нибудь). Второй способ установить приглашение можно, установив переменную среды PROMPT_COMMAND. Если это установлено, $PROMPT_COMMAND выполняется и используется в качестве приглашения вместо переменной среды PS1.

При установке стандартного Git с BASH приглашение Git определяется в файле /etc/profile. Кстати, etc - это каталог, в котором вы установили Git, который обычно находится под %PROGRAMFILES%, если вы не изменили его при установке Git.

В /etc/profile script в строке # 156 в моей версии вы увидите команду PS1, которая будет установлена ​​и с помощью $(__git_ps1) в $PS1 в качестве средства выполнения внешней команды в приглашении. (Третий способ, о котором я не упоминал ранее).

__git_ps1 - это функция оболочки. Вы также заметите немного выше (строка № 154 в моей версии), в которой /etc/git-completion.bash находится в источнике, а также /etc/git-prompt.sh. Он /etc/git-prompt.sh, который определяет функцию __git_ps1 (строка # 273 в моей версии). Вы заметите, что функция __git_ps1 выполняет несколько других функций, определенных в /etc/git-prompt.sh.

Таким образом, в стиле Rube Goldberg запрос Git определяется в /etc/profile посредством определения $PS1, который вытягивает /etc/git-prompt.sh, который определяет функцию __git_ps1, которая тянет в функции __git_ps1_show_upstream и __git_ps1_colorize_gitstring. Затем $PS1 использует строку $(...) как часть вытягивания функции __git_ps1 в PS1.

Вы можете определить свой собственный $HOME/.bash_profile, чтобы переопределить способ установки подсказки для определения собственной подсказки. И когда вы это сделаете, вы также можете использовать функцию __git_ps1 bash в своем собственном запросе.

Или вы можете просто решить ничего не трогать и просто отступить очень медленно. В конце концов, у вас может быть реальная работа.

Ответ 2

Я бы сделал комментарий, если бы у меня была достаточно репутации,

но я предполагаю, что bashrc не находится в вашей домашней папке: ~/, но во всех пользователях или общей папке пользователя (я не знаю, как это называется точно). Посмотрите под своими пользователями, где находятся все пользователи, и найдите .bashrc.

Посмотрите здесь: C:\Users\Все пользователи или: C:\Users\Пользователь по умолчанию

Ответ 3

На моем Windows10 "__git_ps1" определяется в: C: /Program Files/Git/etc/profile.d/git-prompt.sh

Ответ 4

Я столкнулся с подобной проблемой и понял, что случайно добавил переменную $ {HOME} в переменные окружения/системы (этот компьютер) в моем Windows 10 64 бит, указывая на мой путь в unixhome. Как только я удалил это, проблема была исправлена. Моя подсказка Git Bash вернулась к тому, как она выглядела раньше.