GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué no funciona el autocompletado cuando se escribe un nombre de comando después de `fuente`?

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 la READLINE sección, Completing subsección, en man 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 Ver help complete (en su línea de comandos), la Programmable Completion subsección en man bash y en la documentación en línea de bash, y el complete 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.


Linux
  1. ¿Por qué la expresión regular funciona en X pero no en Y?

  2. ¿Por qué la sustitución del proceso Bash no funciona con algunos comandos?

  3. Sed canalizado no funciona en el nombre de archivo encontrado dentro de la sustitución del comando Bash cuando se invoca desde Find "-exec"?

  4. ¿Por qué un largo retraso después de que no se encuentra el comando?

  5. Linux:¿por qué no funciona Setuid?

Comando de fuente Bash

¿Qué es el comando fuente en Linux y cómo funciona?

Comando fuente no encontrado

Al instalar la cadena de herramientas Rust en Docker, el comando Bash `source` no funciona

La coincidencia de patrones no funciona en el script bash

¿Por qué esta expresión regular no funciona en Linux?