apt-get имя пакета автозаполнения не работает


71

В какой-то момент

apt-get install

автозаполнение было сломано

Мне было очень полезно увидеть название пакетов с помощью Tabпрессы

Как восстановить это автозаполнение?


Пожалуйста, отредактируйте свой вопрос, чтобы добавить больше информации. Что он делает сейчас, когда вы нажимаете вкладку? Есть ли ошибка? Пожалуйста, включите это.
— Оли

Какой пакет вы пытались найти? Это доступно через apt-cache search mypkg Я использую Kubuntu на Oneiric, я вижу, что он работает хорошо.
— koolhead17

Например, я нажимаю tab после sudo apt-get install ruby, и терминал выводит мне все пакеты с ruby: ruby-mysql, ryby-dev и т. Д.
— Вячеслав Логинов

Да, и что вы видите вместо этого, когда вы нажимаете вкладку?
— Оли

Я вижу список папок, например, cd + [TAB]
— Вячеслав Логинов

Ответы:


105

Как указано в комментариях к другому ответу, сначала убедитесь, что bash-completionустановлено:

sudo apt-get install bash-completion

и, видимо, для @diapir, это помогло переустановить его:

sudo apt-get install --reinstall bash-completion

Однако для меня проблема была не в том, что bash-creation не был установлен или сломан, а в том, что я случайно удалил свой .bashrcфайл. Вы можете получить новый, скопировав его из /etc/skel:

cp /etc/skel/.bashrc ~/

2
Спасибо, совет bashrc решил проблему и для меня. Использование sudoв chmodкоманде не является необходимым, правда?
— BHSPitMonkey

2
файл находится в /etc/это 0644/-rw-r--r--с пользователем: группа = root:root, и при копировании в папку пользователя, автоматически перейдет к пользователю: пользователь
— kevinf

cp /etc/skel/.bashrc ~ / помог мне решить эту проблему.
— Джейкоб Абрахам

Переустановка и копирование /etc/skel/.bashrc помогли мне, спасибо!
— Сергей

36

Введите следующую команду:

sudo -H gedit /etc/bash.bashrc

Посмотрите на эти строки:

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

Раскомментируйте некоторые строки, чтобы они выглядели так:

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

Сохраните, закройте терминал, затем снова откройте его.

У меня есть проблема после установки 13.04, и вот как я ее решаю.


это было единственное, что сработало для меня. благодарю вас.
— this.foo

Работал для меня на элементарной ОС LoKi
— Родриго Лопес Герра

4

Загрузите последнюю стабильную версию с http://bash-completion.alioth.debian.org/

./configure
make
sudo make install

вставить

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

в ~ / .bashrc


bash-completionв пакетах - есть ли причина, по которой вы сделали это вручную? Пакет должен делать в значительной степени именно это :)
— Цезий

:) как всегда, сижу, читаю мануалы, настраиваю, а потом выясняется, что этот софт есть в репозитории
— Вячеслав Логинов

3
sudo apt-get install --reinstall bash-completionсделал это для меня.
— диапир

2
@diapir, у меня та же проблема, но не работает только переустановка. Я должен применить строки в bashrcфайле.
— Анвар

0

Обратите внимание, что вывод этой команды:

apt-config dump | grep "Dir::Cache"

Должно быть что-то вроде этого:

Dir::Cache "var/cache/apt";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "srcpkgcache.bin";
Dir::Cache::pkgcache "pkgcache.bin";

Если значение Dir::Cache::pkgcacheпусто, apt не сможет автоматически заполнять имена пакетов. Посмотрите на ваши /etc/apt/apt.conf.d/файлы и найдите этот ключ, чтобы убедиться, что он не установлен в пустую строку.

grep -r pkgcache /etc/apt/apt.conf.d/

Также взгляните на этот ответ .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.