O nome do pacote apt-get autocomplete está quebrado

71

Em algum momento

apt-get install

o preenchimento automático foi interrompido

Foi muito útil ver o nome dos pacotes com a Tabimprensa

Como reparar este preenchimento automático?

Вячеслав Логинов
fonte
Edite sua pergunta para adicionar mais informações. O que faz agora quando você pressiona tab? Existe algum erro? Por favor inclua.
Oli
Qual pacote você estava tentando encontrar? Está disponível através da pesquisa apt-cache mypkg Estou usando o Kubuntu no Oneiric e vejo-o funcionando bem.
precisa saber é o seguinte
Por exemplo, eu pressionar guia depois sudo apt-get install ruby, e do terminal exibir-me todos os pacotes com Ruby: ruby-mysql, ryby-dev, etc.
Вячеслав Логинов
Sim, e o que você vê ao pressionar tab?
Oli
Vejo a lista de pastas, como cd + [TAB]
Вячеслав Логинов

Respostas:

105

Conforme indicado nos comentários da outra resposta, primeiro verifique se bash-completionestá instalado:

sudo apt-get install bash-completion

e aparentemente para @diapir, ajudou a reinstalá-lo:

sudo apt-get install --reinstall bash-completion

No entanto, para mim, o problema não era que a conclusão do bash não estava instalada ou quebrada, o problema foi que eu excluí meu .bashrcarquivo acidentalmente . Você pode obter um novo copiando-o de /etc/skel:

cp /etc/skel/.bashrc ~/
Ian Hincks
fonte
2
Obrigado, a dica do bashrc também resolveu o problema. O uso de sudono chmodcomando é desnecessário, certo?
BHSPitMonkey
2
o arquivo localizado na /etc/é 0644/-rw-r--r--com o usuário: group = root:root, e quando copiado para sua pasta de usuário, irá automaticamente para o usuário: user
kevinf
cp /etc/skel/.bashrc ~ / me ajudou a resolver esse problema.
Jacob Abraham
Reinstalar e copiar /etc/skel/.bashrc me ajudou, obrigado!
Sergey
36

Digite o seguinte comando:

sudo -H gedit /etc/bash.bashrc

Procure estas linhas:

# 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

Remova o comentário de algumas linhas, para que fique assim:

# 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

Salve, feche o terminal e abra-o novamente.

Eu tenho esse problema após a instalação do 13.04, e é assim que eu o resolvo.

Nur
fonte
essa foi a única coisa que funcionou para mim. obrigado.
fevereiro de 2015
Trabalhou para mim em Elementar OS Loki
Rodrigo Lopez Guerra
4

Faça o download da versão estável mais recente em http://bash-completion.alioth.debian.org/

./configure
make
sudo make install

inserir

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

para ~ / .bashrc

Вячеслав Логинов
fonte
bash-completionestá nos pacotes - existe algum motivo para você fazer isso manualmente? O pacote deve fazer exatamente isso:) #
Cesium
:) como sempre, sentado, lendo manuais, configurar e, em seguida, verifica-se que este suave é existir no repositório
Вячеслав Логинов
3
sudo apt-get install --reinstall bash-completionfez isso por mim.
Diapir #
2
@diapir, tenho o mesmo problema, mas apenas reinstalar não está funcionando. Eu tenho que aplicar as linhas no bashrcarquivo.
Anwar
0

Observe que a saída deste comando:

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

Deve ser algo como isto:

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

Se o valor de Dir::Cache::pkgcacheestiver vazio, o apt não poderá concluir automaticamente os nomes dos pacotes. Dê uma olhada nos seus /etc/apt/apt.conf.d/arquivos e procure por essa chave para garantir que ela não esteja definida como string vazia.

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

Veja também esta resposta .

iman
fonte