簡體   English   中英

終端中出現“bash:__ gitdir:command not found”錯誤

[英]“bash: __gitdir: command not found” error in terminal

每當我在命令窗口工作時,我得到錯誤:工作線正上方的“bash:__ gitdir:command not found”(換句話說,在任何命令之后,在它提示新的命令之前)。

有什么想法可以提出這個問題嗎?

__gitdirgit-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM