La saisie semi-automatique ne fonctionne pas lors de la connexion en tant que root

23

Je viens de tomber sur quelque chose qui me dérange vraiment. La saisie semi-automatique sur ubuntu fonctionne comme un charme, mais lorsque je me connecte en tant que root, par exemple, suje ne reçois la tabsaisie semi-automatique que parfois.

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

Patryk
la source
Vous vous connectez réellement en tant que root ou utilisez sudo su?
Marty Fried
@MartyFried Oui, je suis Dion sudo su. Quelle est la différence?
Patryk
Cela semble fonctionner pour moi, pouvez-vous nous fournir un exemple précis où cela ne fonctionne pas, quelque chose que nous pouvons reproduire.
ste_kwr
1
@lordmonkey: Peut-être aucun, je ne suis pas vraiment sûr. Je pense que su ou sudo su en soi est un peu différent d'une manière dont je ne me souviens pas, donc je voulais m'assurer que je pouvais vérifier cela dans les mêmes conditions. Il semble que cela fonctionne, mais vous avez dit "parfois", donc je ne peux que vous suggérer de revérifier et d'essayer de le rendre reproductible, ou assurez-vous simplement qu'il ne se passe rien d'autre qui vous trompe - c'est-à-dire, une erreur utilisateur - hey, ça arrive à tout le monde! :)
Marty Fried

Réponses:

41

Vérifiez votre /root/.bashrcfichier pour ces lignes

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

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

Bruno Pereira
la source
Le mien .bashrc contenait les lignes mentionnées mais elles ont été commentées; décommenté les lignes et trouvé le nouveau .bashrc; les choses semblent plutôt bien maintenant.
Ankit
La bash_completionligne, au moins dans mon cas, a été mise en commentaire, car elle prétend que la ligne bash_completionest déjà activée /etc/bash.bashrc, mais ce fichier contient également les lignes en commentaire. Au lieu de décommenter le etcfichier, il est préférable de décommenter la ligne /root/.bashrc.
Peregring-lk
7

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

  • Vérifiez si le bash-completionpackage est installé:

    sudo apt-get install bash-completion
  • Le mien fonctionne si je me connecte en utilisant: sudo -i

Savvas Radevic
la source
Quel est l'intérêt de supprimer le .bashrc de root?
geirha
Je pense qu'il régénérera le .bashrc par défaut lors de la prochaine déconnexion / connexion. Ou peut-être qu'il pourrait contenir une sorte de "désactivation" pour la saisie semi-automatique (je ne sais pas si c'est possible). Je ne me souviens pas de la raison réelle pour laquelle je l'ai écrit.
Savvas Radevic
2
Non, aucun nouveau .bashrcne sera créé et /etc/bash_completionne sera pas fourni, seule la complétion par défaut de bash sera disponible.
geirha
OK, modifié et supprimé. Merci pour votre participation! Bien que je me demande si ~ / .bashrc peut " disable-completion
annuler la source
3

Pour Ubuntu 13.10, /etc/bash.bashrcrecherchez

# 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.

dbtek
la source
0

Trouvé que cela a fonctionné (similaire aux réponses ci-dessus mais avec une torsion)

Le fichier qui doit être édité (au moins dans mon cas avec 12.04) était /root/.bashrc. Cela a du sens dans mon cas, étant donné que mon utilisateur habituel se complétait très 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

Je l'ai simplement 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

Enregistré, et cela a très bien fonctionné.

J'espère que cela aide quelqu'un.

neanderslob
la source
0

Dans Linux Mint 18 (basé sur Xenial), vous devez éditer votre bashrc:

sudo nano /etc/bash.bashrc

et commentez (supprimez le #devant de 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.

le hollandais volant
la source