Apt-get autocompletado


9

Actualmente estoy ejecutando Debian Wheezy de 64 bits.

Tengo algunos problemas con la finalización automática de apt-get. Tengo bash-complete instalado.

Si estoy conectado como root en un shell, puedo usar la finalización automática para apt-get (ej: apt-get install wicd [tab] [tab ]) y me mostrará todos los paquetes que coinciden con eso. Pero si trato de usar la finalización automática para apt-get en otro usuario no root (incluso con sudo) no funcionará en absoluto. Puedo autocompletar otras cosas como nombres de archivos.

¿Alguna ayuda?

Tengo el siguiente código en mi .bashrc y / etc / profile

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi

1
Primero, verifique si root y los otros usuarios tienen el mismo shell. Si no, esa es la razón del comportamiento diferente. De lo contrario, intente esto: 'apt-cache --no-generate pkgnames "wicd"'. ¿Funciona? Eso es lo que bash usa para generar la finalización de 'apt-get install wicd [TAB]'.
angus

Ambos usan el mismo shell, bash. el comando apt-cache que me diste funciona y muestra una lista de todos los paquetes wicd. Además, lo que descubrí es que cuando mi computadora se inicia por primera vez e inicio sesión en el shell por primera vez (no tengo un inicio de sesión gui), el autocompletado de apt-get funcionará con cualquier cuenta. Pero si ejecuto mi administrador de ventanas fvwm-crystal con startx, luego abro un terminal, no funcionará nuevamente solo con mi cuenta de usuario. Todavía funciona con root en fvwm-crystal.
Dennis Linuz

OK, esto es lo que puede estar pasando. / etc / profile y .bash_profile se ejecutan en shells de inicio de sesión. Es decir, cuando inicia sesión en la consola o cuando ejecuta 'su'. Como en esos casos la finalización funciona, / etc / profile está funcionando. Lo que queda es ~ / .bashrc. Comprueba que la línea '. / etc / bash_completion 'realmente se está ejecutando. Ponga algo como 'echo OK' antes, abra una nueva terminal y verifique que dice 'OK'.
angus

¿alguna vez probaste ZSH?
Mohammad Efazati

Su .bashrc podría estar completamente perdido; este fue mi caso
Galvani

Respuestas:


6

Su /etc/bash_completionarchivo debe estar perdido.

sudo apt-get install bash-completion

Debería resolver todos sus problemas.

Dado que ya tiene líneas sin comentar /etc/bash.bashrccomo Faheem Mitha y otros señalaron, debería funcionar ahora:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Motivo: el bash-completionpaquete ahora tiene ese archivo (/ etc / bash_completion). Solía ​​estar en el bashpaquete, pero ya no.

información sobre cambio de paquete


¿Qué debería estar en el archivo / etc / bash_completion ? Me encontré con la fiesta de finalización de instalación de mando y todo lo que ya es la última versión, pero mi archivo finalización Bash es vacío
fifamaniac04

2

Intenta ejecutar esto:

chsh -s /bin/bash $USER

1

No puedo recordar si esto es necesario, pero intente descomentar las líneas correspondientes /etc/bash.bashrcsi no están sin comentar, es decir

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

0

Como recuerdo, bash autocompletion para parámetros de comando se realiza a través del completecomando. Debe tener una secuencia de comandos de finalización apt-get cargada por el usuario raíz bashrc (tal vez /root/.bashrc), por lo que necesita iniciar sesión root para ejecutarla. Sudo no carga scripts de inicio de sesión raíz, solo le da privilegios.

Tal vez te falta ese script de autocompletado para usuarios no root, por lo que no tienen autocompletado bash configurado para apt-get. Si eso es cierto, cargue esa función para los usuarios que tengan TODOS los privilegios dentro del archivo sudoers.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.