Pregunta:
Estoy en Debian Jessie 8.6. Noté que apt-get
obtiene el autocompletado de bash esperado al presionar la pestaña de paquetes y comando, pero cuando intento usarlo con apt
no funciona. Recuerdo haber usado xubuntu 16.04 donde funcionó, así que me parece extraño que no funcione aquí. ¿Hay alguna forma de habilitarlo también para el comando apt
? ¿Si es así, cómo?
Respuesta:
Debian no viene con 'bash-deployment' instalado y habilitado.
Si viene a Debian desde, digamos, un entorno de Ubuntu, donde está preinstalado y habilitado de forma predeterminada, esto puede ser una fuente de confusión.
Para habilitar / 'arreglar' esto, ejecute (como root):
apt-get install bash-completion
Entonces, tienes dos opciones. Tu también puedes:
1. Habilítelo por usuario para usted, o
2. Habilítelo globalmente.
1. Si desea habilitarlo solo para su usuario, edite ~/.bashrc
; agregue lo siguiente:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
Para probarlo sin cerrar la sesión y volver a iniciarla, ejecute:
. ~/.bashrc
O abre un nuevo caparazón. Luego intente usar la función de completar con tabulación con apt. Ese punto y espacio al principio ( .
) Es lo mismo que usar la palabra clave source
en bash, pero es más portátil.
Si desea que funcione cuando su
a la cuenta de root, haga lo mismo en el directorio de inicio de root (normalmente /root
).
2. Para habilitarlo globalmente, haga los cambios de ( 1 ) en el archivo /etc/bash.bashrc
en /etc/bash.bashrc
lugar.
Para cualquiera que se pregunte por qué funciona esto, el .
delante de /etc/bash_completion
no se refiere al directorio actual, ya que tiene espacios a su alrededor. En su lugar, hace que el contenido del archivo dado se evalúe en el shell que se está ejecutando actualmente, en lugar de ejecutarlo en un nuevo subshell. Aquí está estandarizado.
En Bash, esto .
puede ser reemplazado por la source
comando, pero esto no está estandarizado por POSIX y es menos portátil, por lo que tiendo a alejar a la gente de usarlo. En este caso, dado que es específicamente un programa para extender bash, en lugar de algo que necesita funcionar en un shell bourne o ksh
, puede sustituir la legibilidad por source
.
Por cierto, este comportamiento (no abrir un sub-shell) es similar a la forma en que las secuencias de comandos de DOS / Windows .BAT funcionan normalmente, cambiar el estado de la cáscara que se ejecutan en. Esta es la razón por si cd
en un camino diferente en una cáscara script, no estará en esa ruta cuando el script salga como si estuviera en un .BAT.