Bash-Autovervollständigungsverhalten in Debian 8

2505
alle_meije

Bei einer Neuinstallation von Debian 8 (Jessie) habe ich festgestellt, dass sich die automatische Vervollständigung in bash mit dem tabSchlüssel geändert hat.

Der Test, den ich gemacht habe, war:

  1. Öffne ein Terminal (in meinem Fall Konsole). Über der Aufforderung wird angezeigt
    ~ ~
    ~ ~ ~
    ~ ~ ~ ~
    ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~ ~
    ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
  2. mkdir -p /tmp/test # Testverzeichnis erstellen
  3. cd /tmp/test # in das leere Verzeichnis gehen
  4. ls <tab> <tab> <tab> <tab>
    /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~# nach 1 tab
    /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~# nach 2 tabs
    /tmp/test /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~# nach 3 tabs
    /tmp/test /tmp/test /tmp/test /tmp/test /tmp/test ~ ~ ~ ~ ~ ~ ~ ~ ~# nach 4 tabs

Früher wurden nur die Dateien im Verzeichnis angezeigt (sofern vorhanden). Weiß jemand, was dies verursacht? Etwas in .bashrc? Ich freue mich, mehr Dateien zu senden, wenn das hilft!

0
Offensichtliche Frage, aber haben Sie das Paket "bash-completion"? Wir haben die Ausgabe von `dpkg -l | grep bash`. Faheem Mitha vor 8 Jahren 0
"ii bash 4.3-11 + b1 amd64 GNU Bourne Again SHell" und "ii bash-completion 1: 2.1-4" alle programmierbaren Vervollständigungen für die bash-Shell " alle_meije vor 8 Jahren 0
Seltsam. Wenn Sie Jessie hier ausführen, wird die Liste der Dateien wie erwartet erzeugt. Faheem Mitha vor 8 Jahren 0
Es ist auch seltsam, dass es für Programme im Pfad wie erwartet funktioniert. "Pdf" Tab "(2x) enthält eine Liste von etwa 40 PDF-Werkzeugen und" pdfl "Tab" pdflatex ". Es muss etwas in .bashrc oder .profile schief gelaufen sein, ich kann einfach nicht finden, was. alle_meije vor 8 Jahren 0
Überprüfen Sie in Ihrem lokalen `.bashrc` sowie` / etc / bash.bashrc` und `/ etc / profile`, ob irgendetwas schief läuft. Ich habe kein .profile. Ich denke nicht, dass dies Standard ist, zumindest in Debian. Vielleicht lohnt es sich auch, die Ausgabe von `set` zu betrachten, um zu sehen, ob da etwas drin ist, obwohl dies normalerweise eine Menge Sachen ist. Faheem Mitha vor 8 Jahren 1
Ha! Ich fand, dass in meiner alten `.bash_aliases'-Datei` alias [= 'pushd.' 'Und `alias] =' popd '' stand, was ich in den alten Tagen ziemlich gut verwendet habe. Durch das Kommentieren derjenigen in der aktuellen Kopie wurde das unmittelbare Problem gelöst, obwohl es immer noch faszinierend ist, warum diese Aliasnamen nicht mehr zwischen Debian 7 und 8 funktionieren. alle_meije vor 8 Jahren 0

1 Antwort auf die Frage

1
alle_meije

In 2 Schritten wurde die Antwort auf dieses Rätsel gefunden. Zuerst mein altes und .bash_aliasesgebrauchtes . Das Entfernen dieser Zeilen löste das seltsame Verhalten oben, aber ich hatte meine Aliase verloren.alias [='pushd .'alias ]='popd'

Aber wenn ich diese Aliasnamen beibehalten und die Zeile einstelle

if [[ -f ~/.bash_aliases ]]; then . ~/.bash_aliases fi 

in .bashrc nach der Linie

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 

Dann kann ich sowohl meine [als auch meine ]Aliase behalten und eine normale Autovervollständigung haben. Es scheint also, dass die Aliase mit Jessies Autovervollständigung in Bash interferiert haben. Der einzige Grund für den Aufruf von .bash_aliasesvor dem ursprünglichen Aufruf der Autokomplettierungsskripten war, dass sie sich in der .bashrcmit der Installation gelieferten Vorlage in dieser Reihenfolge befanden.

nur 24 Stunden später möglich :) alle_meije vor 8 Jahren 0