Die Autovervollständigung schlägt immer Dateien im aktuellen Verzeichnis vor

Die Autovervollständigung schlägt immer Dateien im aktuellen Verzeichnis vor

Bei Verwendung der Autovervollständigung für einen beliebigen Befehl, der die integrierte _longoptVervollständigungsfunktion verwendet (z. B. mkdir), schlägt die Shell zusätzlich zu den gewünschten Vorschlägen immer auch den Inhalt des aktuellen Verzeichnisses vor.

Wenn ich beispielsweise tippe

mkdir ~/somedir

und drücken Sie zweimal die Tabulatortaste. Bash schlägt vor: (vorausgesetzt, der Typ des aktuellen Verzeichnisses enthält applications, desktop, usw.)

applications/   desktop/     documents/
...
somedir_a/      somedir_b/

Wie kann das normale Verhalten wiederhergestellt werden, sodass Bash nur Vorschläge macht somedir_aund somedir_bkeine anderen Dateien/Verzeichnisse?

Bash-Version: GNU bash, version 5.0.11(1)-release (x86_64-redhat-linux-gnu)
Bash-Vervollständigung:2.8

Antwort1

Dieses Verhalten kann durch die Shell-Option verursacht werden nullglob, die beispielsweise in Ihrem aktiviert sein kann .bashrc.

Der Grund hierfür ist, dass die _longoptFunktion einen Fehler in ihrer Definition aufweist, der dieses Verhalten verursacht, wenn sie _longopteingeschaltet ist.

Die Lösung besteht darin, diese Option zu deaktivieren oder die Funktion selbst zu überschreiben _longopt.

Ein ähnlicher Effekt wird auch hier beschrieben:Warum wirkt sich Nullglob auf die Tab-Vervollständigung aus?, obwohl diese Frage ziemlich schwer zu finden ist, wenn Sie nicht wissen, dass der Fehler bei dieser Option liegt.

EDIT: Wie bereits erwähnt von@fra-san, das ist einbekanntes Problemmit bash-completion. Der Fix ist in der Version gelandet 2.9, diese Version wird jedoch noch nicht auf Fedora (und möglicherweise auch auf anderen Systemen) ausgeliefert.

verwandte Informationen