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

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


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

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.