Tengo acceso de usuario (sin root) a una máquina Linux (Suse) donde desarrollé algunos scripts de bash y las reglas de autocompletado de bash correspondientes.
Dado que los scripts pertenecen solo a mi usuario y, por lo tanto, necesito que las reglas completas solo estén "activas" para mí (una parte del hecho de que no tengo acceso de escritura raíz), colocar mi script bash_completion en la /etc/bash_completion.d/carpeta no es una opción.
En este momento nombré mi archivo .bash_completion.myscripty lo .bashrcobtuve directamente de mi , pero me pregunto si hay alguna otra forma "estándar" de lograr estos resultados, ya considerada en la implementación de bash.
Por ejemplo, ¿creando una carpeta /home/myuser/.bash_completion.d/?
fuente

.bash_completiones un archivo y no un directorio. Dado quebash_completion.des un directorio, supuse que podría simplemente cambiarscpmibash_completion.dnombre local en el servidor remoto, pero en el siguiente inicio de sesión me dijo que tenía que ser un archivo.Así es como un usuario local puede tener un
~/.bash_completion.d/directorio de trabajo .editar archivo:,
nano ~/.bash_completionagregue lo siguiente:hacer directorio:
mkdir ~/.bash_completion.deditar archivo:,
~/.bash_completion.d/myscriptagregue lo siguiente:fuente .bash_completion:
. ~/.bash_completionActualizar
Si anticipa tener un
~/.bash_completion.d/directorio vacío y desea evitar ver el mensaje de errorbash: /home/<username>/.bash_completion.d/*: No such file or directory, agregue una prueba de tipo de archivo con[ -f "$bcfile" ].fuente
La respuesta de Russell E Glaue es excelente, pero
~/.bash_completionestá incompleta.El problema es cuando
~/.bash_completion.d/está vacío y posteriormentefor f in ~/.bash_completion.d/*imprime el siguiente mensaje de error:La solución más simple y portátil es omitir el bucle si el directorio está vacío:
fuente
Una solución más simple es usar la opción nullglob. Si bien esto no es portátil, tampoco lo son las terminaciones de bash. Entonces la portabilidad no importa.
Además, querrá usar comillas alrededor de la variable al buscar fuentes. Esto maneja el caso donde el archivo tiene espacios otros otros caracteres especiales.
fuente
nullglob) es útil para el lector.Al menos bash-complete 2.8 y posterior habilitan la opción para colocar terminaciones de Bash locales en el directorio
Los nombres del archivo de finalización o los nombres de los enlaces simbólicos deben coincidir con los nombres de los comandos respectivos. Estas terminaciones se cargan solo bajo demanda. Las terminaciones almacenadas en el archivo
~/.bash_completionse cargan siempre.Referencia: consulte "P. ¿Dónde debo instalar mis propias terminaciones locales?" en https://github.com/scop/bash-completion/blob/master/README.md
fuente