GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum funktioniert die automatische Vervollständigung nicht, wenn ein Befehlsname nach „Quelle“ eingegeben wird?

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+! . (Siehe READLINE Abschnitt, Completing Unterabschnitt in man 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. Siehe help complete (auf Ihrer Kommandozeile), die Programmable Completion Unterabschnitt in man bash und in der Bash-Online-Dokumentation und complete 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.


Linux
  1. Warum funktioniert der reguläre Ausdruck in X, aber nicht in Y?

  2. Warum funktioniert Tomcat mit Port 8080, aber nicht mit 80?

  3. Bash:Warum wird das übergeordnete Skript nicht bei SIGINT beendet, wenn das untergeordnete Skript SIGINT abfängt?

  4. Bei der Installation der Rust-Toolchain in Docker funktioniert der Bash-Befehl „source“ nicht

  5. Der Musterabgleich funktioniert nicht im Bash-Skript

Bash-Quellbefehl

Linux – Warum funktioniert Setuid nicht?

Rm-Befehl im Bash-Skript funktioniert nicht mit Variablen?

Warum funktioniert „zip“ in einer For-Schleife, wenn die Datei existiert, aber nicht, wenn sie nicht existiert?

Was ist Source Command in Linux und wie funktioniert es?

Quellbefehl nicht gefunden