
Wie kann ich die Bash-Vervollständigung für alles außer Dateisystempfaden deaktivieren?
Aber auch bei Pfaden möchte ich nicht, dass etwas interpretiert wird.
Wenn ich beispielsweise Folgendes tue:
# sh -f fo<tab>
und da ist eine Datei foo.txt, die funktioniert nicht, während sie funktionieren würde, wenn die Datei foo.sh wäre. Ich nehme an, dass Bash versucht, mir hier zu „helfen“. Ich benutze Linux schon lange und möchte nicht, dass die Bash-Vervollständigung irgendetwas tut, bei dem sie voraussetzt, dass sie weiß, was ich denke. Ich möchte nicht, dass sie in Zip-Dateien sucht oder Hostnamen errät. Ich möchte nur eine einfache Pfadnamenvervollständigung und sonst nichts.
Antwort1
bash
hat einen eingebauten Befehl complete
, der das Autovervollständigungsverhalten der aktuellen Shell steuert. Es ist möglich, dass Ihre Distribution oder Ihr Systemadministrator die Konfiguration interaktiver Shells veranlasst hat, indem diese complete
Befehle in die konfigurierten Startdateien eingefügt wurden (traditionell /etc/profile
, /etc/bash.bashrc
, ~/bash_profile
, ~/bash_login
, ~/.profile
, ~/.bashrc
).
Um diese Funktion dauerhaft zu deaktivieren, können Sie diese Dateien so bearbeiten, dass diese complete
Befehle nicht aufgerufen werden (oder nur die gewünschten).
Um die "intelligente" Autovervollständigung nur für eine Instanz einer interaktiven Sitzung zu deaktivieren, führen Sie aus
complete -r
in dieser Sitzung.