[英]“bash: __gitdir: command not found” error in terminal
每當我在命令窗口工作時,我得到錯誤:工作線正上方的“bash:__ gitdir:command not found”(換句話說,在任何命令之后,在它提示新的命令之前)。
有什么想法可以提出這個問題嗎?
__gitdir
是git-completion.bash
腳本提供的一個函數,它允許bash在你輸入git
命令時自動完成。 您是否在.bashrc
或其他配置文件/登錄腳本中使用__gitdir
而沒有采購git-completion.bash
?
您可能在.bashrc
文件中調用了該命令。
嘗試在其中搜索__gitdir:
$ grep __gitdir ~/.bashrc
或者發布其內容,它可能會更容易提供幫助。
可以通過函數__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
沒有定義,那么你會得到這個錯誤(每次打印你的提示)。 例如,如果__gitdir
中定義/etc/*
,但__git_ps1
被發現/usr/share/*
,然后在chroot ENV你可能會最終__git_ps1
定義,但__gitdir
沒有定義。
要“安靜”錯誤消息,請刪除花哨的git提示符,或者只是定義它: __gitdir() { :; }
__gitdir() { :; }
這不會完全解決原始問題上下文,但可能對從較舊版本遷移的較新Ubuntu用戶有用...
我最近將一台舊的Ubuntu 12.04機器升級到了更新版本的Ubuntu,我開始看到由於我的PS1
設置而錯過__git_dir
錯誤,如其他答案所解釋的那樣。 為了理解為什么這個shell函數沒有被定義,我認為我的.bashrc
與最新的Ubuntu約定不是最新的。
我的舊.bashrc
基於最初由舊的Ubuntu系統提供的那個有類似的東西:
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
由較新的Ubuntu系統創建的.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
並且從此開心。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.