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.myscript
y lo .bashrc
obtuve 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_completion
es un archivo y no un directorio. Dado quebash_completion.d
es un directorio, supuse que podría simplemente cambiarscp
mibash_completion.d
nombre 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_completion
agregue lo siguiente:hacer directorio:
mkdir ~/.bash_completion.d
editar archivo:,
~/.bash_completion.d/myscript
agregue lo siguiente:fuente .bash_completion:
. ~/.bash_completion
Actualizar
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_completion
está 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_completion
se 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