Bash-Vervollständigung für Pfade und sonst nichts

Bash-Vervollständigung für Pfade und sonst nichts

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

bashhat 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 completeBefehle 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 completeBefehle 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.

verwandte Informationen