Ошибка "bash: __gitdir: команда не найдена" в терминале - PullRequest
2 голосов
/ 29 ноября 2011

Всякий раз, когда я работаю в командном окне, я получаю сообщение об ошибке: «bash: __gitdir: команда не найдена» прямо над рабочей строкой (другими словами, сразу после любой команды, прежде чем она запрашивает новую).

Есть какие-нибудь идеи относительно того, что происходит, чтобы поднять это?

Ответы [ 4 ]

6 голосов
/ 29 ноября 2011

__gitdir - это функция, предоставляемая скриптом git-completion.bash, которая позволяет bash выполнять автозаполнение при вводе команд git.Используете ли вы __gitdir в вашем .bashrc или другом профиле / сценарии входа без источника git-completion.bash?

4 голосов
/ 29 ноября 2011

Возможно, у вас есть что-то, вызывающее эту команду в вашем файле .bashrc.

Попробуйте найти в нем __gitdir:

$ grep __gitdir ~/.bashrc

Или, возможно, опубликуйте его содержимое, и, вероятно,легче помочь.

0 голосов
/ 10 августа 2016

Это не совсем соответствует исходному контексту вопроса, но может быть полезно для новых пользователей Ubuntu, переходящих со старых версий ...

Я недавно обновил старую машину Ubuntu 12.04 до более новой версии Ubuntu, и я начал видеть ошибки, связанные с отсутствием __git_dir из-за моих настроек PS1, таких как объяснение в других ответах. Чтобы понять, почему эта функция оболочки не была более определена, я подумал, что мой .bashrc не соответствует современным соглашениям Ubuntu.

Мой старый .bashrc, основанный на том, который изначально был предоставлен старой системой Ubuntu, имел что-то похожее на это:

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

, в то время как .bashrc файлы, созданные более новыми системами Ubuntu, сначала пытаются использовать /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 и с тех пор был счастлив.

0 голосов
/ 15 мая 2014

Необычное приглашение git может быть включено с помощью функции __git_ps1, которая может быть встроена в 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/*, то в enot chroot вы можете получить __git_ps1, но __gitdir не определено.

Чтобы «успокоить» сообщение об ошибке, либо удалите необычное приглашение git, либо просто определите его: __gitdir() { :; }

...