我的办公室和家用电脑都有Git Bash for Windows来源于同一个源码(Git for Windows,TortoiseGit附带),但是Git Bash的提示符在两台机器上都有所不同:
/c/path (branch)
全是绿色的(这是,我怎么想它), 直到现在我被告知,这是PS1
variables,保存在~/.bashrc
文件中。 但是,在这两台机器上,这个文件丢失了(执行notepad ~/.bashrc
打开空的记事本)。
我迷路了 如果~/.bashrc
不存在,那么从哪里Git Bash“知道”,它应该显示当前分支,在绿色提示? 为什么在第二台机器上不会发生这种情况?
编辑 : 我也试图比较两个机器和Git Bash.vbs
文件的内容的c:\Program Files\Git\etc\
文件夹内容。 在两台计算机上都是一样的,所以我甚至不知道Git Bash的提示符在两台计算机上是不同的(以及如何解决这个问题)。
几个答案(像这样 , 这个和这个 )已经提示我,我应该寻找.bash_profile
和.bash_prompt
文件。 不幸的是,我的两台电脑上都没有这两个。
究竟是什么文件决定在Windows 7下呢? 我应该在哪里寻找什么, PS1
variables的值应该是什么,在两台机器上显示绿色提示的当前分支?
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:\用户\默认用户