2014-03-27 77 views
14

我的兩個辦公室和家用電腦讓Git的Bash for Windows的非常相同的源(GIT適用於Windows,與TortoiseGit來了),但Git的bash的提示符不同,在兩臺機器上:確切地說Git Bash for Windows的提示符在哪裏?

  • 辦公室的電腦上我有/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下?我應該在哪裏尋找,以及變量值應該是多少,以便在兩臺機器上顯示綠色提示中的當前分支?

+0

您可能沒有在兩臺機器上使用相同版本的Git Bash。每臺機器上的命令'echo $ PS1'顯示了什麼內容? – lrineau

回答

15

的Git在Windows上幾乎總是使用bash shell的。所以,不是Git 設置提示就像Bash一樣。

有兩種方法可以在Bash中設置提示。一個是相當靈活的PS1命令,但僅限於特定的一組轉義字符序列。不幸的是,Git信息並不是那些轉義序列之一(儘管我懷疑它會在某一天出現)。您可以使用第二種方法通過設置PROMPT_COMMAND環境變量來設置提示。如果已設置,則執行$PROMPT_COMMAND並將其用作提示而不是PS1環境變量。

當您使用BASH安裝標準Git時,Git提示符在/etc/profile文件中定義。順便說一句,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,它定義了__git_ps1函數(我的版本中的第273行)已被定義。您會注意到__git_ps1函數引入了/etc/git-prompt.sh中定義的其他幾個函數。

因此,在一個非常Rube戈爾登伯格方式,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功能。或者,你可以簡單地決定不碰任何東西,然後慢慢地退回去。畢竟,你可能有實際的工作要做。

+0

感謝您的啓發和詳細的答案。我必須用我的家用電腦驗證這一點,但正如我在我的問題中所寫的,兩臺電腦上的'c:\ Program Files \ Git \ etc \'文件夾與文件數量和內容相同(由Total Commander的同步工具檢查)。即使如此,兩臺機器上的提示都不相同。即使是因爲你沒有解決我的問題(至少現在是這樣),它可能會變得太過本地化(只發生在這裏)。但是你確實回答了一個給定問題的詳細答案,所以我接受了你的答案,甚至很難「對我沒有幫助」(根據SE常見問題解答)。謝謝! :] – trejder

+1

有沒有可能您的'$ HOME'目錄在一臺或另一臺機器上有'.profile','.bash_profile'或'.bashrc'文件,這就是提示設置的地方?在兩個系統上同時回聲'$ PS1'和'$ PROMPT_COMMAND'。同時檢查兩個系統上的_file modes_。如果文件未被標記爲可執行文件,則在登錄時沒有被採用。 –

+0

卸載,重新啓動,重新安裝(第1步或第2步,點擊自定義按鈕)在非c:\ program files ...文件夾,如c :\ APPS \混帳 – tgkprog

1

我會做一個評論,如果我有足夠的聲譽,

但我的猜測是,在.bashrc是不是在你的homefolder:〜/但在所有用戶或普通用戶文件夾(我不知道是怎麼回事完全命名)。查看所有用戶所在的用戶,然後搜索.bashrc。

看看這裏:C:\ Users \ All用戶 或C:\用戶\ Default用戶

+0

沒有。在發佈這個問題之前,我已經在整個系統驅動器('c:')中搜索了'.bashrc','.bash_profile'和'.bash_prompt'文件的任何蹤跡。它們都不存在於任何'c:'驅動器子文件夾中(包括用於本地用戶設置的'Users'文件夾和安裝Git的'Program Files')。感謝你的努力,但這肯定是錯誤的方向。 – trejder

相關問題