Woher kommen die Bash-Vervollständigungsfunktionen?

Woher kommen die Bash-Vervollständigungsfunktionen?

Ich habe einen Raspberry Pi mit Raspbian (Debian Wheezy). Ich habe ihn setin 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, gitum 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 gitein- 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 gitPaket. 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.dwerden als Teil der Einrichtung der programmierbaren Vervollständigung von Bash in geladen /etc/bash_completion. Debians Standard .bashrclä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 gitPaket. Wenn Sie das gitPaket installiert haben, führen Sie den gitBefehl 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.

verwandte Informationen