Apt-get Autocompletion

9

Ich verwende derzeit 64-Bit-Debian Wheezy.

Ich habe einige Probleme mit der automatischen Vervollständigung für apt-get. Ich habe Bash-Vervollständigung installiert.

Wenn ich als root in einer Shell angemeldet bin, kann ich die automatische Vervollständigung für apt-get verwenden (z. B. apt-get install wicd [tab] [tab ]) und es werden mir alle Pakete angezeigt, die dem entsprechen. Aber wenn ich versuche, die automatische Vervollständigung für apt-get in einem anderen Nicht-Root-Benutzer (auch mit sudo) zu verwenden, funktioniert dies überhaupt nicht. Ich kann andere Dinge wie Dateinamen automatisch vervollständigen.

Irgendeine Hilfe?

Ich habe den folgenden Code in meinem .bashrc und / etc / Profil

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi
Dennis Linuz
quelle
1
Überprüfen Sie zunächst, ob root und die anderen Benutzer dieselbe Shell haben. Wenn nicht, ist das der Grund für das unterschiedliche Verhalten. Versuchen Sie andernfalls Folgendes: 'apt-cache --no-generate pkgnames "wicd"'. Funktioniert es? Das ist es, was bash verwendet, um den Abschluss von 'apt-get install wicd [TAB]' zu generieren.
Angus
Sie benutzen beide die gleiche Shell, Bash. Der Befehl apt-cache, den Sie mir gegeben haben, funktioniert und zeigt eine Liste aller Wicd-Pakete an. Außerdem habe ich herausgefunden, dass die automatische Vervollständigung von apt-get mit jedem Konto funktioniert, wenn mein Computer zum ersten Mal hochfährt und ich mich zum ersten Mal bei der Shell anmelde (ich habe keine GUI-Anmeldung). Wenn ich jedoch meinen fvwm-Crystal-Fenstermanager mit startx starte und dann ein Terminal öffne, funktioniert es nicht mehr nur mit meinem Benutzerkonto. Es funktioniert immer noch mit Wurzel in fvwm-Kristall.
Dennis Linuz
OK, das kann passieren. / etc / profile und .bash_profile werden in Login-Shells ausgeführt. Das heißt, wenn Sie sich an der Konsole anmelden oder wenn Sie 'su' ausführen. Da in diesen Fällen die Fertigstellung funktioniert, funktioniert / etc / profile. Was bleibt, ist ~ / .bashrc. Überprüfen Sie, ob die Linie '. / etc / bash_completion 'wird wirklich ausgeführt. Stellen Sie etwas wie "Echo OK" davor, öffnen Sie ein neues Terminal und überprüfen Sie, ob "OK" angezeigt wird.
Angus
Hast du jemals ZSH getestet?
Mohammad Efazati
Ihre .bashrc fehlt möglicherweise vollständig. Dies war mein Fall
Galvani

Antworten:

6

Ihre /etc/bash_completionDatei muss fehlen.

sudo apt-get install bash-completion

sollte alle Ihre Probleme lösen.

Angesichts der Tatsache, dass Sie bereits unkommentierte Zeilen haben, /etc/bash.bashrcwie Faheem Mitha und andere betonten, sollte es jetzt funktionieren:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Grund: Das bash-completionPaket enthält jetzt diese Datei (/ etc / bash_completion). Früher war es im bashPaket, aber nicht mehr.

Infos zum Paketwechsel

n611x007
quelle
Was sollte in der Datei / etc / bash_completion sein ? Ich habe den Befehl zum Installieren der Bash-Vervollständigung ausgeführt und alles ist bereits die neueste Version, aber meine Bash-Vervollständigungsdatei ist leer
fifamaniac04
2

Versuchen Sie Folgendes:

chsh -s /bin/bash $USER
HaEl
quelle
1

Ich kann mich nicht erinnern, ob dies notwendig ist, aber versuchen Sie, die entsprechenden Zeilen zu /etc/bash.bashrckommentieren, wenn nicht bereits nicht kommentiert, nämlich

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi
Faheem Mitha
quelle
0

Wie ich mich erinnere, erfolgt die Bash-Autovervollständigung für Befehlsparameter über den completeBefehl. Sie sollten ein apt-get-Vervollständigungsskript haben, das vom Root-Benutzer bashrc (möglicherweise /root/.bashrc) geladen wird, sodass Sie das Root-Login benötigen, um es auszuführen. Sudo lädt keine Root-Anmeldeskripte, sondern gibt Ihnen nur Berechtigungen.

Möglicherweise fehlt Ihnen das Skript für die automatische Vervollständigung für Nicht-Root-Benutzer, sodass für die automatische Vervollständigung von Bashs nicht für apt-get konfiguriert ist. Wenn dies zutrifft, laden Sie diese Funktion für Benutzer mit ALLEN Berechtigungen in der sudoers-Datei.

D4RIO
quelle