source
sucht PATH
standardmäßig.
Aber in Bash funktioniert die automatische Vervollständigung nicht, wenn ein Befehlsname nach source
eingegeben wird .
Wann funktioniert die automatische Vervollständigung im Allgemeinen auf der Grundlage von PATH
funktioniert und wann nicht?
Wie kann ich es zum Laufen bringen, wenn ich das Argument in source
tippe ?
Danke.
Akzeptierte Antwort:
source
(die bash
eingebauter Befehl) nimmt einen Dateinamen an Streit; die PATH-Suche wird nur ausgelöst, wenn der angegebene Dateiname nicht gefunden wird. Also source foo
versucht zuerst, ./foo
zu öffnen und nur wenn das fehlschlägt, sucht es nach /path/dir/foo
. Probieren Sie die Tab-Vervollständigung mit Dateinamen aus, die in Ihrem aktuellen Verzeichnis vorhanden sind, oder geben Sie Pfade zu dem Befehl an, an dem Sie interessiert sind. Diese sollten wie erwartet mit der Tab-Vervollständigung versehen werden.
-
Der einfachste Weg, das zu erreichen, was Sie wollen, besteht darin, zu erkennen, dass die Tab-Vervollständigung versucht, complete-filename zu verwenden aber Sie möchten Komplettbefehl . Sie können complete-command auslösen mit dem
M-!
keybind alias Alt+! . (SieheREADLINE
Abschnitt,Completing
Unterabschnitt inman bash
und in der Bash-Online-Dokumentation für andere Vervollständigungsfunktionen und Standard-Tastenkombinationen.) -
Der harte Weg wäre, die standardmäßigen Vervollständigungsfunktionen zu überarbeiten, die für
source
ausgelöst werden ’s erstes Argument, um sowohl den complete-filename aufzurufen und complete-command Funktionen. Siehehelp complete
(auf Ihrer Kommandozeile), dieProgrammable Completion
Unterabschnitt inman bash
und in der Bash-Online-Dokumentation undcomplete
eingebauter Befehl.
Im Allgemeinen ist die Tab-Vervollständigung positionsabhängig und ruft verschiedene Vervollständigungsfunktionen auf, je nachdem, wo Sie sich in der Befehlszeile befinden. Auf Arch-Systemen können Pakete eine Vervollständigungsdatei in /usr/share/bash-completion
installieren um kontextbewusste Vervollständigungen für ihre ausführbaren Dateien bereitzustellen.