web-dev-qa-db-fra.com

La complétion automatique ne fonctionne pas tant que vous êtes connecté en tant que root

Je viens de découvrir quelque chose qui me dérange vraiment. La complétion automatique sur ubuntu fonctionne comme un charme, mais lorsque je me connecte en tant que root, par exemple. su J'obtiens tab l'auto-complétion seulement parfois.

Pourquoi ça marche comme ça? Peut-on changer cela?

22
Patryk

Vérifiez votre fichier /root/.bashrc pour ces lignes

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

S'ils n'existent pas, ajoutez-les à la fin du fichier en utilisant votre éditeur de texte préféré.

40
Bruno Pereira

Vous n'avez pas mentionné la version d'Ubuntu que vous utilisez.

  • Vérifiez si le package bash-completion est installé:

    Sudo apt-get install bash-completion
    
  • Le mien fonctionne si je me connecte avec: Sudo -i

7
Savvas Radevic

Pour Ubuntu 13.10, vérifiez /etc/bash.bashrc pour

# 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

Ils pourraient être commentés. Les commenter fonctionne.

3
dbtek

Dans Linux Mint 18 (basé sur Xenial), vous devez modifier votre base de données:

Sudo nano /etc/bash.bashrc

et commentez (supprimez le # devant chaque ligne) cette section:

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

C'est tout.

0

Constaté que cela fonctionnait (semblable aux réponses ci-dessus mais avec une torsion)

Le fichier à éditer (du moins dans mon cas avec 12.04) était /root/.bashrc. Cela a du sens dans mon cas, étant donné que mon utilisateur habituel complétait automatiquement bien, mais que ma racine ne l’était pas.

Quoi qu'il en soit, dans ledit fichier, j'ai trouvé tout le code nécessaire mais il a été commenté:

# 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

Juste un commenté:

# 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

Sauvé, et ça a bien fonctionné.

J'espère que ça aide quelqu'un.

0
neanderslob