source
busca PATH
por defecto.
Pero en bash, el autocompletado no funciona cuando se escribe un nombre de comando después de source
.
En general, ¿cuándo funciona el autocompletado basado en PATH
? funciona, ¿y cuándo no?
¿Cómo puedo hacer que funcione al escribir el argumento en source
? ?
Gracias.
Respuesta aceptada:
source
(el bash
comando incorporado) toma un nombre de archivo argumento; la búsqueda de RUTA se activa solo si no se encuentra el nombre de archivo especificado. Así que source foo
primero intenta abrir ./foo
y solo cuando eso falla, busca /path/dir/foo
. Intente completar con tabuladores los nombres de archivo que existen en su directorio actual, o proporcione rutas al comando que le interesa. Deberían completarse con tabulaciones como cabría esperar.
-
La forma más fácil de lograr lo que desea es reconocer que la finalización con tabulación está intentando complete-filename pero quieres comando completo . Puede activar comando completo con la
M-!
combinación de teclas también conocida como Alt+! . (Consulte laREADLINE
sección,Completing
subsección, enman bash
y en la documentación en línea de bash para otras funciones de finalización y combinaciones de teclas predeterminadas). -
La forma difícil sería revisar las funciones de finalización predeterminadas activadas para
source
El primer argumento para llamar tanto al nombre-de-archivo-completo y comando completo funciones Verhelp complete
(en su línea de comandos), laProgrammable Completion
subsección enman bash
y en la documentación en línea de bash, y elcomplete
comando integrado.
En general, la finalización con tabulación es posicional y llama a diferentes funciones de finalización en función de dónde se encuentre en la línea de comandos. En los sistemas Arch, los paquetes pueden instalar un archivo de finalización en /usr/share/bash-completion
para proporcionar finalizaciones sensibles al contexto para sus ejecutables.