Die automatische Vervollständigung von Befehlen und Datei-/Ordnernamen (aka bash-completion) über die Tabulator-Taste ist eine tolle Sache. Zum einen “tippt” es sich so schneller und zum anderen reduziert man deutlich die Gefahr von Vertippern. Allerdings funktioniert die Bash-Completion nicht mehr sobald man Root-Rechte für einen Befehl braucht. Stellt man einem Befehl ein sudo voran, dann bewirkt die Tab-Taste rein gar nichts mehr.
Ihr könnt Bash-Completion auf jedoch auch unter Ubuntu für sudo aktivieren (wie es mit anderen Distributionen aussieht habe ich jetzt nicht getestet, wichtig ist dass die Bash als Shell verwendet wird), öffnet dazu die ~/.bashrc in einen Editor…
$ gedit ~/.bashrc
…und fügt am Ende die Zeilen…
if [ "$PS1" ]; then
complete -cf sudo
fi
…ein. Speichert die Änderung ab, schließt das Terminal-Fenster und startet es danach neu. Nun sollte die Bash-Completion auch mit “sudo-Befehlen” klappen… Was ich mich jedoch frage, hat das negative Auswirkungen? Oder warum ist das bei Ubuntu noch von Haus aus aktiviert?
(via wiki.archlinux.org)

29. März 2010 um 01:25 Uhr
>Stellt man einem Befehl ein sudo voran, dann bewirkt die Tab-Taste rein gar nichts mehr.<
Entweder ich benutze die Tab-Taste wesentlich seltener, als ich mir einbilde, oder das Phänomen tritt bei mir nicht auf.
Ich hab's noch nie beobachtet.
29. März 2010 um 01:29 Uhr
bei mir gehts auch so schon unter sudo
29. März 2010 um 01:37 Uhr
… bei mir geht’s auch ohne mit!
29. März 2010 um 01:38 Uhr
Kann mich nur anschließen. Klappt bei mir auch mit vorangestelltem sudo.
29. März 2010 um 01:45 Uhr
Ich hab es jetzt auch extra mal ausprobiert, bei mir klappt die Vervollständigung auch
29. März 2010 um 03:55 Uhr
wenn, dann halte ich die möglichkeit mit
alias sudo=’sudo ‘
für sinnvoller. so müsste die completion auch funktionieren und zusätzlich funktionieren die anderen aliase noch.
29. März 2010 um 11:43 Uhr
Nachdem ich meine profile und bashrc dateien (/home und /etc) auf der suche nach manuellen aenderungen durchforstet habe, komme ich zum selben ergebnis wie meine vorredner. funzt bei mir auch so (jaunty). liegt es vielleicht an der version (lynx?)
29. März 2010 um 12:40 Uhr
Einfach den Befehl ohne sudo ausführen.
Nach dem absehbaren Fehler den Befehl mit
$ sudo !!
wiederholen.
29. März 2010 um 14:40 Uhr
Hmmmm… Mein Setup aus Lynx ist eigentlich “Standard”, bei meinen anderen Systemen habe ich jahre alte Homeverzeichnisse. Strange, naja… Vielleicht hilft der Hinweis ja dem einen oder anderen
29. März 2010 um 14:48 Uhr
wenn deine homeverzeichnisse so alt sind, vielleicht liegts ja gerade daran. evtl. war das ja bei feisty (gutsy…) so nicht in der .bashrc drin?
gruß: linuxnetzer
30. März 2010 um 23:06 Uhr
was normalerweise nicht geht, ist wenn man mit
sudo su
in die root-shell wechselt.
dann kann er zum Beispiel nach “apt-get” nicht weiter vervollstaendigen
2. April 2010 um 22:29 Uhr
@11 Dafür nimmt man eh besser sudo -s
greebo@Hero:~$ sudo -s
[sudo] password for greebo:
root@Hero:~# echo $HOME
/home/greebo
root@Hero:~# exit
exit
greebo@Hero:~$ sudo su
root@Hero:/home/greebo# echo $HOME
/root
10. April 2010 um 09:49 Uhr
“Was ich mich jedoch frage, hat das negative Auswirkungen?”
Seit dem ich die Änderungen in mein bashrc eingefügt habe, funktioniert zwar die Completion für mit sudo für die Shell, aber die Completion für aptitude Programme funktioniert nicht mehr: z.B aptitude inst oder aptitude install firef; nichts rührt sich.
Grüße,
Marco
10. April 2010 um 21:08 Uhr
Hallo Marco, muss ich mal bei mir probieren. Bin eher ein apt-geter als ein aptutider
Pingback: Parkrocker.com » Google Reader-Empfehlungen – 20. April 2010
3. Mai 2010 um 15:42 Uhr
Super, mir hat der Tipp gerade geholfen. Arch Linux liefert per default eine fast vollständig leere .bashrc! Außerdem weiß ich jetzt wenigstens, warum das so funktioniert
28. Mai 2010 um 18:34 Uhr
“Schüler-Tablet” mit ARM-Prozessorkern für unter 100 US-Dollar (http://www.heise.de/open/meldung/Schueler-Tablet-mit-ARM-Prozessorkern-fuer-unter-100-US-Dollar-1009987.html)