Rajouter l’auto-complétion à la commande « sudo »
Comme beaucoup de personnes, j’utilise très souvent (tout le temps ?) l’auto-complétion dans mon terminal. Mais comme tout le monde le sait, l’auto-complétion ne fonctionne pas avec le mode « sudo ».
Petit rappel, l’auto-complétion sous Linux permet de compléter automatiquement les commandes. Par exemple, lorsque je tape dans un terminal « nau », il me suffit d’appuyer sur la touche TAB pour que le mot s’autocomplète et m’affiche tout seul : « nautilus » (c’est un exemple, et cela fonctionne si vous avez bien sur Nautilus d’installé
)
L’auto-complétion fonctionne avec toute les lignes de commandes, mais lorsqu’on veut faire ceci en root avec la commande sudo sous ubuntu, l’auto-complétion ne fonctionne pas … Pour palier à ce problème, nous allons éditer votre fichier .bachrc et rajouter une instruction.
Taper dans un terminal :
sudo gedit ~/.bashrc
Puis rajouter à la fin du fichier le code ci-dessous :
if [ "$PS1" ]; then
complete -cf sudo
fi
Puis taper le code suivant pour recharger la conf sans avoir à déconnecter la session
source .bashrc

Source : http://www.webupd8.org
| Imprimer l'article | Cette entrée a été posté par SckyzO le 10 mars 2010 à 17 h 39 min, et placée dans Logiciel Libre, Planet-Libre. Vous pouvez suivre les réponses à cette entrée via RSS 2.0. Vous pouvez laisser une réponse, ou bien un trackback depuis votre site. |

about 4 months ago
Bonjour, juste 2 petits détails :
Pour lancer un programme graphique à moins de vouloir voir des infos de debug il est préférable d’utiliser un lanceur graphique pour éviter de bloquer une console à moins de mettre l’application en background (Ctrl + Z ou ‘&’ à la fin de la ligne).
Sous Gnome (il me semble que c’est pareil sous KDE) il faut faire Alt + F2 (et utiliser gksudo au lieu de sudo), si on utilise pas de gestionnaire de bureau mais seulement un gestionnaire de fenêtres type Openbox ou Pekwm on peut utiliser bashrun qui peut être lancé avec Alt+F2 si on le configure comme tel.
Pour terminer, la bonne solution pour « recharger la conf sans avoir à déconnecter la session » est de taper : source .bashrc
).
En effet, en tapant bash tu lances une session bash dans une session bash (tu peux taper exit pour revenir à la première session qui aura toujours l’ancienne configuration
about 4 months ago
{{Mais comme tout le monde le sait, l’autocomplétion ne fonctionne pas avec le mode « sudo ».}}
Ha bon ? C’est nouveau ça. Pourtant, chez moi ça fonctionne très bien.
Change de console et de shell, tu verras, ça ira mieux
about 4 months ago
exec bash, pour recharger
(ou . ~/.bashrc, ou source .bashrc)
faut arreter avec cette manie de multiplier les processes
et @Ricard:
t’as pas forcement tors, suivant les distribs, bash est parfois configure.
mais verifie avant de poster des anneries…
l’autocompletion sur une commande du PATH, alors que celle-ci n’est pas le premier mot de la ligne de commande (utilise apres sudo, which, apropos, man, …) ne fonctionne pas.
tu peux d’ailleurs verifier :
sous ton bash (pre-configure)
sudo ls
l’autocompletion te donne bien ls, lsmod, lshal, …
maintenant, essaye :
abc ls
la, l’autocompletion va t’envoyer chier.
about 4 months ago
@sam et urcadox,
Merci c’est corrigé pour le reload du bashrc
@ricard,
Pareil que sam
about 4 months ago
Troll assumé : bah d’abord zsh c’est mieux ! Et il gère mieux l’autocomplétion (pour les entrées man par exemple).
Mais bon c’est vrai que bash rattrape son retard dans ce domaine.
Et sinon les commentateurs sont rapides, je n’ai même pas pu fustigé pour le « bash » à la place du « source .bashrc », que c’était fait.
Bon article sinon !
about 4 months ago
Je suis d’accord pour ZSH, je l’utilise sur mes serveurs Solaris.
Pour mon Ubuntu le bash me va très bien, je le trouve de plus en plus performant.
about 4 months ago
Merci bien =).
about 4 months ago
Sous xubuntu c’est apparemment déjà tout bien configuré. Et heureusement pqe avec le nombre de « sudo aptitude update && sudo aptitude safe-upgrade » que j’écris par semaine…
about 4 months ago
Pourquoi faut-il éditer le .bashrc avec un sudo ?un gedir ~/.bashrc suffirait !
about 4 months ago
Bon ben je répète encore une fois alors.
L’auto complétion fonctionne très bien chez moi avec sudo. J’utilise zsh et urxvt. J’ai bien vérifié avant de poster mon annerie hein.
Comment préférer bash quand on utilise zsh sur un serveur de prod ?
M’enfin, chacun fait comme il veut après tout.
Ou alors, soit plus explicite dans tes articles. T’aurais peut-être du préciser dans le titre que c’était pour bash.
about 4 months ago
si tu lis pas l’article aussi…
allez, derniere remarque gratos par rapport a ton premier post (t’as gagne, t’es vraiment pas malin) :
comment veux-tu qu’un terminal (pas console, bordel) influence les resultats d’autocompletion d’un shell ?
lis, reflechis, je sais pas.
mais parfois, vaut mieux se taire et passer pour un idiot…
apres, pourquoi utiliser bash ?
l’argument universel serait que, sur n’importe quel distribution, post install, tu trouvera systematiquement un shell de type csh (pour les BSD-like) ou sh/bash (Linux et consort).
(et ne me reponds pas que t’installe avec ton gnome pre-configure, … on parle de core/base)
mais pour te repondre : simplement parceque, tu l’as peut-etre sur *ton* serveur de prod, mais je peux t’assurer que tu dois etre l’un des seul…
qu’est-ce qu’un shell kikoolol vient faire dans de la prod ?
par definition, tu dois pouvoir faire quelque chose (de productif) avec…
tu sais scripter en zsh ? (aussi bien qu’en sh/bash ?)
apres, ok, c’est pas mon shell non plus, mais justement, quand je fais de la « prod », c’est bash (et je retourne sur tcsh quand j’ai pas besoin de scripter)
about 4 months ago
salut,
Merci pour la manip. je me suis souvent posé la question, sans avoir eu le temps et la curiosité d’y répondre. En tout cas ça vas mettre bien utile.
Et sinon je reprend la question de Talou est il vraiment nécessaire d’éditer le fichier ~/.bashrc avec les droits root ?
Prenez soit de vous.
about 4 months ago
non, en temps normal, les droits root sont inutiles la-dessus
pour le verifier :
ls -l ~/.bashrc
si le fichier t’appartient, ou si tu as les droits en ecriture, pas de soucis a se faire.
si le fichier est un lien vers celui de /etc (ou /root), refere-toi aux droits du fichier pointe, mais normalement, tu ne les aura pas.
about 4 months ago
Merci pour cette astuce
bien pratique.
J’ai utilisé vi au lieu de gedit c’est grave ? :p
about 1 month ago
Salutations,
Ne serait-il pas plus simple et plus avantageux d’installer directement le paquet ‘bash-completion’ disponible chez l’ensemble des distributions majeures.
Celui-ci apporte l’auto-completion avec sudo, avec les options de commandes (comme aptitude), avec les noms de paquets, avec la commande scp (va même compléter les chemins sur la machine distante !)…etc.
Bref, auto-completion c’est le paquet indispensable !