El autocompletado no funciona mientras está registrado como root


23

Acabo de encontrar algo que realmente me está molestando. El autocompletado en ubuntu funciona a las mil maravillas, pero cuando inicio sesión como root, p su. Ej ., tabConsigo el autocompletado solo a veces.

¿Por qué funciona así? ¿Se puede cambiar eso?


¿Estás realmente iniciando sesión como root o estás usando sudo su?
Marty Fried

@MartyFried Sí, estoy diong sudo su. ¿Cuál es la diferencia?
Patryk

Parece funcionar para mí, ¿puede proporcionarnos una instancia específica de cuándo no funciona, algo que podamos replicar?
ste_kwr

1
@lordmonkey: Quizás ninguno, no estoy muy seguro. Creo que su o sudo su en sí mismo es un poco diferente de alguna manera que no recuerdo, por lo que quería asegurarme de poder verificar esto en las mismas condiciones. Parece que funciona, pero dijiste "a veces", así que solo puedo sugerirte que verifiques dos veces e intentes que sea reproducible, o simplemente asegúrate de que no esté sucediendo otra cosa que te esté engañando, es decir, un error del usuario. ¡le pasa a todo el mundo! :)
Marty Fried

Respuestas:


41

Verifique su /root/.bashrcarchivo para estas líneas

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

Si no existen, agréguelos al final del archivo con su editor de texto favorito.


El mío .bashrc contenía las líneas mencionadas pero fueron comentadas; descomentó las líneas y obtuvo el nuevo .bashrc; las cosas se ven bastante bien ahora.
Ankit

La bash_completionlínea, al menos en mi caso, fue comentada, porque afirma bash_completionque ya está habilitada /etc/bash.bashrc, pero ese archivo también tiene esas líneas comentadas. En lugar de descomentar el etcarchivo, es mejor descomentar la línea /root/.bashrc.
Peregring-lk

7

No ha mencionado qué versión de Ubuntu usa.

  • Comprueba si tienes el bash-completionpaquete instalado:

    sudo apt-get install bash-completion
  • El mío funciona si inicio sesión usando: sudo -i


¿Cuál es el punto de eliminar .bashrc de la raíz?
geirha

Creo que regenerará el .bashrc predeterminado en el próximo cierre de sesión / inicio de sesión. O quizás podría contener algún tipo de "desactivación" para autocompletar (no sé si es posible). Sin embargo, no recuerdo la razón real por la que lo escribí.
Savvas Radevic

2
No, .bashrcno se creará un nuevo y no se /etc/bash_completionobtendrá, solo estará disponible la finalización predeterminada de bash.
geirha

OK, editado y eliminado. ¡Gracias por su aporte! Aunque me pregunto si ~ / .bashrc puede "unsource" un archivo o si disable-completiontodavía está disponible: superuser.com/questions/37148/...
Savvas Radevic

3

Para Ubuntu 13.10, comprobar /etc/bash.bashrcpara

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

Podrían ser comentados. Descomentarlos funciona.


0

Encontró que esto funcionó (similar a las respuestas anteriores pero con un giro)

El archivo que debe editarse (al menos en mi caso con 12.04) era /root/.bashrc. Esto tiene sentido en mi caso, dado que mi usuario habitual estaba autocompletando bien pero mi raíz no.

De todos modos en dicho archivo encontré todo el código necesario pero se comentó:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    #. /etc/bash_completion
#fi

Simplemente no lo comenté:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Guardado, y funcionó bien.

Espero que esto ayude a alguien.


0

En Linux Mint 18 (basado en Xenial), debe editar su bashrc:

sudo nano /etc/bash.bashrc

y comente (elimine el #frente de cada línea) esta sección:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
     . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
     . /etc/bash_completion
  fi
fi

Eso es todo.

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.