Apt-получить автозаполнение

9

В настоящее время я использую 64-разрядную версию Debian Wheezy.

У меня возникли проблемы с автозаполнением для apt-get. У меня установлено bash-complete.

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

Любая помощь?

У меня есть следующий код в моем .bashrc и / etc / profile

 if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
 fi
Деннис Линуз
источник
1
Во-первых, проверьте, имеют ли root и другие пользователи одинаковую оболочку. Если нет, то причина в другом поведении. В противном случае попробуйте следующее: 'apt-cache --no-generate pkgnames "wicd"'. Это работает? Это то, что bash использует для генерации завершения 'apt-get install wicd [TAB]'.
ангус
Они оба используют одну и ту же оболочку, bash. Команда apt-cache, которую вы мне дали, работает и показывает список всех пакетов wicd. Кроме того, я обнаружил, что когда мой компьютер загружается в первый раз и я вхожу в оболочку в первый раз (у меня нет входа в графический интерфейс), автозаполнение apt-get будет работать с любой учетной записью. Но если я запускаю свой оконный менеджер fvwm-crystal с помощью startx, а затем открываю терминал, он снова не будет работать только с моей учетной записью. Он все еще работает с root в fvwm-crystal.
Деннис Линуз
ОК, это то, что может происходить. / etc / profile и .bash_profile запускаются при входе в систему. То есть, когда вы входите в консоль, или когда вы запускаете 'su'. Поскольку в этих случаях завершающие работы работают, / etc / profile работает. Осталось ~ / .bashrc. Проверьте, что линия ". / etc / bash_completion 'действительно выполняется. Поместите что-то вроде «echo OK» перед ним, откройте новый терминал и проверьте, что он говорит «OK».
ангус
ты когда-нибудь проверял 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упаковке, но не больше.

информация об изменении пакета

n611x007
источник
что должно быть в файле / etc / bash_completion ? Я запустил команду install bash-
complete
2

Попробуйте запустить это:

chsh -s /bin/bash $USER
Hael
источник
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, загруженный пользователем root bashrc (может быть, /root/.bashrc), поэтому для его запуска вам нужно войти в систему как root. Sudo не загружает скрипты root, он просто дает вам привилегии.

Возможно, вам не хватает этого скрипта автозаполнения для пользователей без полномочий root, поэтому у них нет настроенного автозаполнения bash для apt-get. Если это так, загрузите эту функцию для пользователей, имеющих ВСЕ привилегии, в файле sudoers.

D4RIO
источник