
У меня есть Raspberry Pi с Raspbian (Debian Wheezy). Я вошел set
в терминал и был удивлен длинным списком. Кажется, это почти полностью функции git — ~3700 строк.
__git_all_commands=
__git_diff_common_options=$'--stat --numstat --shortstat --summary\n\t\t\t--patch-with-stat --name-only
...
Мой вопрос: как они туда попали и почему?
Я иногда git
получал посылки.
Я проверил всех обычных подозреваемых /etc/profile
, /etc/bash.bashrc
, .bashrc
,.profile
Я нашел скрипт /etc/bash_completion.d/git
(никогда раньше не слышал о bash_completion). Мне нужно еще немного изучить, чтобы понять, что он делает и где именно он вызывается.
Мне еще нужно разобратьсяПОЧЕМУЯ бы хотел запускать это в каждой оболочке входа, когда я использую ее только git
один или два раза в год. (Raspberry Pi не слишком наделен оперативной памятью). На моем Mac этого, похоже, не происходит.
решение1
Эти функции являются частью поддержки завершения оболочки для git
. Они поддерживаются как часть программного обеспечения Git. Debian (на котором основан Raspbian) распространяет настройку завершения bash в пакете git
. Функции находятся в /etc/bash_completion.d/git
, в том же каталоге, что и другая поддержка завершения команд для bash.
Все файлы в /etc/bash_completion.d
загружаются как часть настройки программируемого автодополнения bash, в /etc/bash_completion
. В Debian .bashrc
загружаются файлы по умолчанию /etc/bash_completion
, вы можете отредактировать их, если вам не нужно автодополнение, специфичное для команд.
Если вы никогда не используете git, удалите git
пакет. Если у вас git
установлен пакет, то, вероятно, вы иногда запускаете git
команду и поэтому хотите иметь хорошее завершение для нее. «Я использую git редко и хочу сэкономить несколько килобайт оперативной памяти» — слишком тонкое различие даже для Debian.
Если вы хотите пропустить этот файл завершения и использовать другие, вы можетеотвлекатьфайлу имя, которое заставляет его пропускаться /etc/bash_completion
. Перенаправление файла — это способ сообщить менеджеру пакетов о необходимости применить обновления и удаления к файлу, расположенному в другом месте.
dpkg-divert --add --local --rename --divert /etc/bash_completion.d/git.dpkg-diverted /etc/bash_completion.d/git
решение2
Существуют глобальные и пользовательские скрипты, которые включаются при входе в систему ( /etc/profile
, $HOME/.profile
, $HOME/.bash_profile
, $HOME/.bash_login
).
В большинстве дистрибутивов содержимое некоторого каталога (например, /etc/env.d/*
или чего-то подобного) обычно включается в глобальный скрипт, в котором пакеты могут размещать свои собственные скрипты настройки среды, которые вызываются при каждом входе в систему.