Apt-get autouzupełnianie

9

Obecnie korzystam z 64-bitowej wersji Debian Wheezy.

Mam problem z automatycznym ukończeniem apt-get. Mam zainstalowane zakończenie bash.

Jeśli jestem zalogowany jako root w powłoce, mogę użyć automatycznego uzupełniania dla apt-get (np. Apt-get install wicd [tab] [tab ]) i pokaże mi wszystkie pakiety, które pasują do tego. Ale jeśli spróbuję użyć automatycznego uzupełniania dla apt-get u innego użytkownika niż root (nawet z sudo), to w ogóle nie zadziała. Mogę automatycznie uzupełniać inne rzeczy, takie jak nazwy plików.

Jakaś pomoc?

Mam następujący kod w moim .bashrc i / etc / profile

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi
Dennis Linuz
źródło
1
Najpierw sprawdź, czy root i inni użytkownicy mają tę samą powłokę. Jeśli nie, to jest przyczyną innego zachowania. W przeciwnym razie spróbuj wykonać następujące czynności: „apt-cache --no-generować pkgnames„ wicd ”. Czy to działa? Właśnie tego używa bash do generowania zakończenia „apt-get install wicd [TAB]”.
angus
Obaj używają tej samej powłoki, bash. polecenie apt-cache, które mi dałeś, działa i pokazuje listę wszystkich pakietów wicd. Odkryłem również, że kiedy mój komputer uruchamia się po raz pierwszy i loguję się do powłoki po raz pierwszy (nie mam GUI), autouzupełnianie apt-get będzie działać z każdym kontem. Ale jeśli uruchomię menedżera okien fvwm-crystal w Startx, a następnie otworzę terminal, to nie będzie działać ponownie tylko z moim kontem użytkownika. Nadal działa z rootem w fvwm-crystal.
Dennis Linuz,
OK, to może się dziać. / etc / profile i .bash_profile są uruchamiane na powłokach logowania. Oznacza to, że po zalogowaniu się na konsoli lub uruchomieniu polecenia „su”. Ponieważ w takich przypadkach działa ukończenie, / etc / profile działa. Pozostało ~ / .bashrc. Sprawdź, czy linia ”. / etc / bash_completion 'jest naprawdę wykonywany. Umieść przed nim coś w rodzaju „echo OK”, otwórz nowy terminal i sprawdź, czy napis „OK”.
angus
czy kiedykolwiek testowałeś ZSH?
Mohammad Efazati
Brakuje twojego .bashrc; taki był mój przypadek
Galvani

Odpowiedzi:

6

Brak /etc/bash_completionpliku.

sudo apt-get install bash-completion

powinien rozwiązać wszystkie twoje problemy.

Biorąc pod uwagę, że masz już /etc/bash.bashrcniepomocowane linie, jak zauważyli Faheem Mitha i inni, powinno to działać teraz:

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

Powód: bash-completionPakiet ma teraz ten plik (/ etc / bash_completion). Kiedyś był w bashpakiecie, ale już nie.

informacje o zmianie pakietu

n611x007
źródło
co powinno być w pliku / etc / bash_completion ? Uruchomiłem polecenie instalacji bash-uzupełniania i wszystko jest już w najnowszej wersji, ale mój plik zakończenia basha jest pusty
fifamaniac04,
2

Spróbuj uruchomić to:

chsh -s /bin/bash $USER
HaEl
źródło
1

Nie pamiętam, czy jest to konieczne, ale spróbuj odkomentować odpowiednie wiersze, /etc/bash.bashrcjeśli nie jest to już niezomentowane, a mianowicie

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi
Faheem Mitha
źródło
0

Jak pamiętam, autouzupełnianie bash dla parametrów polecenia odbywa się za pomocą completepolecenia. Powinieneś mieć skrypt ukończenia apt-get załadowany przez użytkownika root bashrc (może /root/.bashrc), więc aby go uruchomić, musisz zalogować się rootem. Sudo nie ładuje skryptów logowania roota, po prostu daje ci uprawnienia.

Być może brakuje ci tego skryptu autouzupełniania dla użytkowników innych niż root, więc nie mają skonfigurowanego autouzupełniania bash dla apt-get. Jeśli tak jest, załaduj funkcję dla użytkowników posiadających WSZYSTKIE uprawnienia w pliku sudoers.

D4RIO
źródło