确切地说Git Bash for Windows'提示符被定义?

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

  • 在办公室电脑上我有/c/path (branch)全是绿色的(这是,我怎么想它),
  • 在家用电脑上,我只有path(不分支)和全白。

直到现在我被告知,这是PS1variables,保存在~/.bashrc文件中。 但是,在这两台机器上,这个文件丢失了(执行notepad ~/.bashrc打开空的记事本)。

我迷路了 如果~/.bashrc不存在,那么从哪里Git Bash“知道”,它应该显示当前分支,在绿色提示? 为什么在第二台机器上不会发生这种情况?

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

几个答案(像这样 , 这个和这个 )已经提示我,我应该寻找.bash_profile.bash_prompt文件。 不幸的是,我的两台电脑上都没有这两个。

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

Solutions Collecting From Web of "确切地说Git Bash for Windows'提示符被定义?"

Windows上的Git几乎总是使用bash shell。 所以,并不是像Bash那样设置提示符

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

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

在我的版本的#156行的/etc/profile脚本下,你可以看到设置了PS1命令,并在$PS1使用$(__git_ps1)作为在提示中执行外部命令的一种手段。 (我之前没有提到的第三种方式)。

__git_ps1是一个shell函数。 你还会注意到在/etc/git-completion.bash了一点(我的版本中的第154行)。 /etc/git-prompt.sh定义了__git_ps1函数(我的版本中的行号273)。 您会注意到__git_ps1函数__git_ps1__git_ps1中定义的其他几个函数。

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

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

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

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

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

看这里:C:\用户\所有用户或:C:\用户\默认用户