Die automatische Vervollständigung funktioniert nicht, wenn Sie als Root angemeldet sind

23

Ich bin gerade auf etwas gestoßen, das mich wirklich stört. Autovervollständigung auf Ubuntu funktioniert wie ein Zauber, aber wenn ich mich als root anmelde, subekomme ich zB tabnur manchmal Autovervollständigung.

Warum funktioniert das so? Kann man das ändern?

Patryk
quelle
Melden Sie sich tatsächlich als root an oder verwenden Sie sudo su?
Marty Fried
@MartyFried Ja, ich bin diong sudo su. Was ist der Unterschied?
Patryk
Es scheint für mich zu funktionieren, können Sie uns eine bestimmte Instanz bereitstellen, wenn es nicht funktioniert, etwas, das wir replizieren können.
ste_kwr
1
@ Lordmonkey: Vielleicht keine, ich bin nicht wirklich sicher. Ich denke, su oder sudo su an sich ist in gewisser Hinsicht ein bisschen anders, als ich es mir erinnere. Deshalb wollte ich sicherstellen, dass ich dies unter den gleichen Bedingungen überprüfen kann. Es scheint so, als ob es funktioniert, aber Sie sagten "manchmal", also kann ich Ihnen nur empfehlen, es noch einmal zu überprüfen und zu versuchen, um es reproduzierbar zu machen, oder nur sicherzustellen, dass nichts anderes passiert, das Sie täuscht - dh Benutzerfehler - hey, es passiert allen! :)
Marty Fried

Antworten:

41

Überprüfen Sie Ihre /root/.bashrcDatei auf diese Zeilen

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

Wenn sie nicht vorhanden sind, fügen Sie sie mit Ihrem bevorzugten Texteditor am Ende der Datei hinzu.

Bruno Pereira
quelle
Mein .bashrc enthielt die erwähnten Zeilen, aber sie wurden auskommentiert; die Zeilen auskommentiert und die neue .bashrc bezogen; es sieht jetzt ziemlich gut aus.
Ankit
Die bash_completionZeile wurde, zumindest in meinem Fall, auskommentiert, da behauptet bash_completionwird /etc/bash.bashrc, dass die bereits aktiviert ist , aber diese Datei enthält auch die auskommentierten Zeilen. Anstatt die etcDatei zu dekommentieren, ist es besser, die Zeile in zu dekommentieren /root/.bashrc.
Peregring-lk
7

Sie haben nicht erwähnt, welche Ubuntu-Version Sie verwenden.

  • Überprüfen Sie, ob Sie das bash-completionPaket installiert haben:

    sudo apt-get install bash-completion
  • Meins funktioniert, wenn ich mich anmelde mit: sudo -i

Savvas Radevic
quelle
Was bringt es, die .bashrc-Datei von root zu entfernen?
Geirha
Ich denke, es wird die Standard-.bashrc beim nächsten Abmelden / Anmelden neu generieren. Oder es könnte eine Art "Deaktivierung" für die automatische Vervollständigung enthalten (weiß nicht, ob es möglich ist). Ich kann mich nicht erinnern, warum ich es aufgeschrieben habe.
Savvas Radevic
2
Nein, es .bashrcwird kein neues erstellt und es /etc/bash_completionwird kein Sourcing durchgeführt. Es ist nur die Standardvervollständigung von bash verfügbar.
Geirha
OK, bearbeitet und entfernt. Danke für deinen Beitrag! Obwohl ich frage mich , ob ~ / .bashrc kann „unsource“ eine Datei oder wenn disable-completionnoch verfügbar ist : superuser.com/questions/37148/...
Savvas Radevic
3

Für Ubuntu 13.10, Check /etc/bash.bashrcfür

# 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

Sie könnten kommentiert werden. Das Aufheben von Kommentaren funktioniert.

dbtek
quelle
0

Gefunden, dass dies funktioniert (ähnlich wie die Antworten oben, aber mit einem Twist)

Die zu bearbeitende Datei (zumindest in meinem Fall mit 12.04) war /root/.bashrc. Dies ist in meinem Fall sinnvoll, da mein normaler Benutzer in Ordnung automatisch vervollständigt wurde, mein Root jedoch nicht.

Jedenfalls habe ich in der genannten Datei den gesamten erforderlichen Code gefunden, der jedoch auskommentiert wurde:

# 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

Nur unkommentiert:

# 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

Gespeichert, und es hat gut funktioniert.

Hoffe das hilft jemandem.

Neanderlob
quelle
0

In Linux Mint 18 (basierend auf Xenial) müssen Sie Ihren bashrc bearbeiten:

sudo nano /etc/bash.bashrc

und kommentieren Sie #diesen Abschnitt aus (entfernen Sie das Häkchen vor jeder Zeile):

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

Das ist alles.

le hollandais volant
quelle