正是Git Bash for Windows'提示定义了吗?

时间:2014-03-27 13:46:11

标签: windows git bash prompt

我的办公室和家用电脑都有来自同一来源的Git Bash for Windows(Git for Windows,TortoiseGit附带),但Git Bash的提示在两台机器上都有所不同:

  • 在办公室电脑上我/c/path (branch)全绿(这就是我希望它如何),
  • 在家用电脑上我只有路径(没有分支)而且都是白色的。

到目前为止,我被告知,这是PS1变量,保存在~/.bashrc文件中。但是,在两台计算机上都缺少此文件(执行notepad ~/.bashrc会打开空的记事本)。

我迷失在这里。如果~/.bashrc不存在,那么Git Bash"知道",它应该在绿色提示中显示当前分支?为什么在第二台机器上不会发生同样的情况?

编辑我还尝试比较c:\Program Files\Git\etc\文件的机器和内容的Git Bash.vbs文件夹内容。在两台计算机上都是相同的,所以我更不知道,Git Bash的提示在两台计算机上都有所不同(以及如何解决这个问题)。

有几个答案(例如thisthisthis)建议我,我应该查找.bash_profile.bash_prompt个文件。不幸的是,我的两台计算机上也缺少这两个。

Windows 7下究竟是什么文件决定?我应该在哪里寻找,以及PS1变量值应该是什么,以便在两台机器上以绿色提示显示当前分支?

4 个答案:

答案 0 :(得分:20)

Windows上的Git几乎总是使用bash shell。所以,它不是Git 设置提示和Bash一样多。

有两种方法可以在Bash中设置提示。一个是PS1命令,它相当灵活,但仅限于一组特定的转义字符序列。不幸的是,Git信息不是其中一个转义序列(尽管我怀疑它有一天会来)。您可以使用第二种方法通过设置PROMPT_COMMAND环境变量来设置提示。如果设置了此项,则会执行$PROMPT_COMMAND并将其用作提示而不是PS1环境变量。

当您使用BASH安装标准Git时,您在/etc/profile文件下定义了Git提示。顺便说一下,etc是您安装Git的目录,通常在%PROGRAMFILES%下,除非您在安装Git时更改了它。

在我的版本中第156行的/etc/profile脚本下,您会看到正在设置PS1命令并在$(__git_ps1)中使用$PS1作为执行外部操作的方法命令在提示符中。 (我之前没有提及的第三种方式)。

__git_ps1是一个shell函数。您还会注意到/etc/git-completion.bash以及/etc/git-prompt.sh的来源(我的版本中的第154行)。定义/etc/git-prompt.sh函数(我的版本中的第273行)的__git_ps1已定义。您会注意到__git_ps1函数会引入/etc/git-prompt.sh中定义的其他几个函数。

所以,以非常Rube Goldberg的方式,通过定义/etc/profile$PS1中定义了Git提示,其引入/etc/git-prompt.sh定义了__git_ps1函数拉动在__git_ps1_show_upstream函数和__git_ps1_colorize_gitstring函数中。然后,$PS1使用$(...)字符串作为将__git_ps1函数拉入PS1的一部分。

您可以定义自己的$HOME/.bash_profile以覆盖设置提示以定义自己的提示的方式。而且,当您这样做时,您也可以在自己的提示中使用__git_ps1 Bash功能。

或者,你可以简单地决定不接触任何东西,然后慢慢地退回去。毕竟,你可能还有实际的工作要做。

答案 1 :(得分:2)

我遇到了类似的问题,并意识到我不小心在Windows 10 64位环境/系统变量(此PC)下添加了$ {HOME}变量,该变量指向我的unixhome路径。一旦删除它,问题就解决了。我的Git Bash提示符又回到了以前的样子。

答案 2 :(得分:1)

如果我有足够的声誉,我会发表评论,

但我的猜测是bashrc不在你的homefolder中:〜/但在所有用户或一般用户文件夹中(我不知道它是如何命名的)。查看所有用户所在的用户,并搜索.bashrc。

看这里:C:\ Users \ All Users 或:C:\ Users \ Default User

答案 3 :(得分:1)

在我的Windows10上,“ __ git_ps1”定义在以下位置:C:/ Program Files / Git / etc / profile.d / git-prompt.sh