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