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.