2011-11-29 145 views

回答

4

你可能在你的.bashrc文件中有調用該命令的東西。

嘗試在其搜索__gitdir:

$ grep __gitdir ~/.bashrc 

或許張貼的內容,而且它可能會更容易幫助。

+0

是的,我們在.bashrc文件中調用它。謝謝! –

+0

@JoshJohnson不客氣,很高興你解決了它! – elias

6

__gitdir是由git-completion.bash腳本提供的一項功能,可讓bash在鍵入git命令時自動完成。您在.bashrc或其他資料/登錄腳本中是否使用__gitdirgit-completion.bash

0

可以通過函數__git_ps1啓用花哨的git提示符,該函數可以嵌入PS1並在每次打印提示時調用。它是在定義一個特定的,但可能不同於定義__gitdir的文件時定義的。該__git_ps1(它調用__gitdir)可能是也許/etc/bash_completion.d/git-prompt/usr/share/git-core/contrib/completion/git-prompt.sh/etc/bash_completion.d/git(等)...

但如果__git_ps1最終得到確定,但__gitdir沒有,那麼你會得到這個錯誤(您的每一次提示被打印)。例如,如果在/etc/*中定義了__gitdir,但在/usr/share/*中發現了__git_ps1,那麼在chroot env中,最終可能會定義__git_ps1,但不會定義。

要「安靜」的錯誤信息,或者刪除看中git的提示,或者只是把它定義:__gitdir() { :; }

0

這不正是解決原來的問題方面,但可能會爲新的Ubuntu用戶從舊的遷移是有用的版本...

我最近升級了一箇舊的Ubuntu 12.04機器到較新版本的Ubuntu,並且我開始看到有關__git_dir錯誤的錯誤,這是因爲我的PS1設置(如其他答案所解釋的)。爲了理解爲什麼這個shell函數沒有更多的定義,我想我的.bashrc沒有與最新的Ubuntu約定保持同步。

我的老.bashrc這是基於最初由舊的Ubuntu系統提供一個有類似這樣:通過新的Ubuntu系統中創建

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then 
    . /etc/bash_completion 
fi 

.bashrc文件首次嘗試使用/usr/share/bash-completion/bash_completion

if ! shopt -oq posix; then 
    if [ -f /usr/share/bash-completion/bash_completion ]; then 
    . /usr/share/bash-completion/bash_completion 
    elif [ -f /etc/bash_completion ]; then 
    . /etc/bash_completion 
    fi 
fi 

當我用新的替換舊的bash完成採購時,我定義了__git_dir,並且從此以後很高興。