source
hledá PATH
ve výchozím nastavení.
Ale v bash nefunguje automatické dokončování při zadávání názvu příkazu za source
.
Obecně platí, že kdy probíhá automatické dokončování založené na PATH
funguje a kdy ne?
Jak mohu zajistit, aby to fungovalo při psaní argumentu do source
?
Děkuji.
Přijatá odpověď:
source
(bash
vestavěný příkaz) přebírá název souboru argument; hledání PATH se spustí pouze v případě, že zadaný název souboru není nalezen. Takže source foo
pokusí se nejprve otevřít ./foo
a teprve když to selže, začne hledat /path/dir/foo
. Zkuste tab-completing s názvy souborů, které existují ve vašem aktuálním adresáři, nebo poskytněte cesty k příkazu, který vás zajímá. Ty by měly tab-complete podle očekávání.
-
Nejjednodušší způsob, jak dosáhnout toho, co chcete, je rozpoznat, že se dokončování tabulátoru pokouší o complete-filename ale chcete kompletní příkaz . Můžete spustit kompletní příkaz pomocí
M-!
klávesová zkratka aka Alt+! . (VizREADLINE
sekce,Completing
podsekci vman bash
a v online dokumentaci bash pro další dokončovací funkce a výchozí klávesové zkratky.) -
Obtížným způsobem by bylo revidovat výchozí dokončovací funkce spouštěné pro
source
je prvním argumentem pro volání obou název kompletního souboru a kompletní příkaz funkcí. Vizhelp complete
(na vašem příkazovém řádku),Programmable Completion
podsekce vman bash
a v online dokumentaci bash acomplete
vestavěný příkaz.
Obecně platí, že dokončování tabulátorem je poziční a volá různé funkce dokončování podle toho, kde se v příkazovém řádku nacházíte. Na systémech Arch mohou balíčky nainstalovat soubor dokončení do /usr/share/bash-completion
poskytovat kontextově orientovaná dokončení pro jejich spustitelné soubory.