Apt-отримати автодоповнення


9

На даний момент я працюю на 64-розрядному Debian Wheezy.

У мене є проблеми з автоматичним завершенням для apt-get. У мене встановлено базове завершення.

Якщо я ввійшов як оболонка в оболонці, я можу використовувати автоматичне завершення для apt-get (наприклад: apt-get install wicd [tab] [tab ]), і він покаже мені всі пакети, які відповідають цьому. Але якщо я спробую використати автоматичне завершення apt-get для іншого некорінного користувача (навіть із судо), це взагалі не вийде. Я можу автоматично виконати інші речі, як-от імена файлів.

Будь-яка допомога?

У мого .bashrc та / etc / profile у мене є такий код

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

1
Спочатку перевірте, чи мають root і інші користувачі однакову оболонку. Якщо ні, то це причина різної поведінки. В іншому випадку спробуйте це: 'apt-cache - не-генерувати pkgnames "wicd"'. Це працює? Ось що bash використовує для створення завершення "apt-get install wicd [TAB]".
angus

Вони обидва використовують одну і ту ж оболонку, баш. команда apt-кеш, яку ви дали мені, працює і показує список усіх пакетів wicd. Крім того, що я дізнався, коли мій комп'ютер завантажується вперше і я вперше входжу в оболонку (я не маю входу в gui), автоматичне завершення apt-get буде працювати з будь-яким обліковим записом. Але якщо я запускаю свій fvwm-кристалічний віконний менеджер зі запуском, а потім відкрию термінал, він знову не працюватиме лише з моїм обліковим записом користувача. Він все ще працює з коренем у fvwm-кристалі.
Денніс Лінуз

Гаразд, ось що може статися. / etc / profile та .bash_profile запускаються на оболонках входу. Тобто, коли ви входите на консоль, або під час запуску "su". Оскільки в цих випадках працює робота по завершенню, / etc / profile працює. Залишилося ~ / .bashrc. Перевірте, що лінія ". / etc / bash_completion 'справді виконується. Покладіть перед ним щось на кшталт "відлуння ОК", відкрийте новий термінал і перевірте, що на ньому написано "Добре".
angus

ви коли-небудь тестували ZSH?
Мохаммед Ефазаті

Ваш .bashrc може бути повністю відсутній; це був мій випадок
Гальвані

Відповіді:


6

Ваш /etc/bash_completionфайл повинен бути відсутнім.

sudo apt-get install bash-completion

повинні вирішити всі ваші проблеми.

З огляду на те, що у вас вже є рядки, котрі не коментуються, /etc/bash.bashrcяк вказували Фахім Мітха та інші, це має працювати зараз:

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

Причина: bash-completionпакет тепер має цей файл (/ etc / bash_completion). Раніше було в bashупаковці, але не більше.

інформація про зміну пакету


що має бути у файлі / etc / bash_completion ? Я запустив команду встановити bash-завершення, і все вже остання версія, але мій файл завершення bash порожній
Fiveamaniac04


1

Я не можу згадати, чи потрібно це, але спробуйте коментувати відповідні рядки з, /etc/bash.bashrcякщо вже не коментованих, а саме

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

0

Як я пам’ятаю, автозаповнення bash для командних параметрів здійснюється через complete команди. У вас повинен бути скрипт apt-get завершення завантажений кореневим користувачем bashrc (можливо, /root/.bashrc), тому для його запуску вам потрібно ввійти в систему root. Судо не завантажує кореневі скрипти для входу, він просто надає вам пільги.

Можливо, вам не вистачає цього сценарію автодоповнення для користувачів, що не користуються коренем, тому у них немає налаштованого автозаповнення bash для apt-get. Якщо це правда, завантажте ці функції для користувачів, які мають ВСІ привілеї у файлі sudoers.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.