
Ich habe einen Raspberry Pi mit Raspbian (Debian Wheezy). Ich habe ihn set
in ein Terminal eingegeben und war von der langen Liste überrascht. Es scheint sich fast ausschließlich um Git-Funktionen zu handeln – ~3700 Zeilen davon.
__git_all_commands=
__git_diff_common_options=$'--stat --numstat --shortstat --summary\n\t\t\t--patch-with-stat --name-only
...
Meine Frage ist, wie sind sie dorthin gekommen und warum?
Ich habe es gelegentlich genutzt, git
um Pakete zu erhalten.
Ich habe alle üblichen Verdächtigen überprüft /etc/profile
,/etc/bash.bashrc
.bashrc
.profile
Ich habe ein Skript gefunden /etc/bash_completion.d/git
(von bash_completion hatte ich noch nie gehört). Ich muss noch ein bisschen mehr recherchieren, um herauszufinden, was es macht und wo es genau aufgerufen wird.
Ich muss noch herausfindenWARUMIch würde dies in jeder Login-Shell ausführen wollen, wenn ich es nur git
ein- oder zweimal im Jahr verwende. (Der Raspberry Pi ist nicht gerade übermäßig mit RAM ausgestattet). Auf meinem Mac scheint dies nicht zu passieren.
Antwort1
Diese Funktionen sind Teil der Shell-Vervollständigungsunterstützung für git
. Sie werden als Teil der Git-Software gepflegt. Debian (auf dem Raspbian basiert) verteilt das Bash-Vervollständigungs-Setup im git
Paket. Die Funktionen befinden sich in /etc/bash_completion.d/git
, im selben Verzeichnis wie andere Befehlsvervollständigungsunterstützung für Bash.
Alle Dateien in /etc/bash_completion.d
werden als Teil der Einrichtung der programmierbaren Vervollständigung von Bash in geladen /etc/bash_completion
. Debians Standard .bashrc
lädt /etc/bash_completion
, Sie können es herausnehmen, wenn Sie keine befehlsspezifische Vervollständigung wünschen.
Wenn Sie Git nie verwenden, entfernen Sie das git
Paket. Wenn Sie das git
Paket installiert haben, führen Sie den git
Befehl vermutlich manchmal aus und möchten daher eine gute Vervollständigung dafür haben. „Ich verwende Git nur selten und möchte ein paar Kilobyte RAM sparen“ ist selbst für Debian eine zu feine Unterscheidung.
Wenn Sie diese Vervollständigungsdatei überspringen und andere verwenden möchten, können Sieumleitender Datei einen Namen zuzuweisen, der dazu führt, dass sie übersprungen wird /etc/bash_completion
. Durch die Umleitung einer Datei können Sie dem Paketmanager mitteilen, dass Aktualisierungen und Entfernungen auf eine Datei angewendet werden sollen, die sich an einem anderen Ort befindet.
dpkg-divert --add --local --rename --divert /etc/bash_completion.d/git.dpkg-diverted /etc/bash_completion.d/git
Antwort2
Es gibt globale und benutzerspezifische Skripte, die bei der Anmeldung eingefügt werden ( /etc/profile
, $HOME/.profile
, $HOME/.bash_profile
, $HOME/.bash_login
).
Bei den meisten Distributionen wird der Inhalt eines Verzeichnisses (wie /etc/env.d/*
oder etwas Ähnlichem) normalerweise vom globalen Skript einbezogen, wo Pakete ihre eigenen Umgebungs-Setup-Skripte ablegen können, die bei jeder Anmeldung als Quelle verwendet werden.