Após uma atualização recente (Ubuntu 12.04 LTS), o TAB completo na linha de comando fica lento. Depois de inserir um comando parcial (por exemplo evi [TAB]
) ou nome de arquivo parcial (por exemplo evince somedocu[TAB]
), o shell, às vezes, embora nem sempre, trava por alguns segundos.
Pessoalmente, eu prefiro um preenchimento automático menos poderoso a um lento. Existe uma solução simples?
Editar: informações adicionais relacionadas aos comentários:
PATH é bastante padrão. ~ / bin tem alguns scripts bash
$ echo $PATH /home/USERNAME/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
O número de arquivos no diretório de trabalho é menor que 100.
- O recurso de preenchimento automático ficou especialmente lento após atividades incomuns no disco (atualização do sistema). É, portanto, possível, que reler / usr / bin e outros diretórios tenham causado o atraso.
bash
autocomplete
Jan
fonte
fonte
Respostas:
Não sei como consertar - existem todos os tipos de coisas que podem causar atrasos. Mas posso oferecer algumas dicas para investigar.
Apenas como um palpite, talvez exista um diretório em algum lugar no caminho de pesquisa (
$PATH
ou em algum lugar em que o bash procure por dados de conclusão) que esteja em um sistema de arquivos que demore a responder. Geralmente, os sistemas de arquivos remotos são lentos, mas também pode ser um disco rígido com falha, um driver FUSE travado, etc.A primeira etapa a investigar é executar
set -x
para rastrear os comandos que o shell executa para gerar as conclusões. Observe onde ele faz uma pausa.Se isso não der informações suficientes, leve as armas grandes. Observe o ID do processo do shell (
echo $$
). Em outro terminal, executestrace -f -s9999 -p$$
(ou o equivalente a strace se estiver executando em outro sabor unix). Strace lista as chamadas do sistema realizadas pelo processo. Veja se parece estar acessando arquivos que não deveria ou se o acesso a alguns arquivos é lento. A adição da opção-T
àstrace
linha de comando mostra o tempo gasto em cada chamada do sistema.fonte
set -x
, que comando legal. Muito "modo de hackers envolvidos"set +x
para voltar ao modo não-depuração normaisSe a sua caixa * nix estiver configurada como um cliente LDAP, você poderá ter esse problema, mesmo efetuando login como usuário local.
Informações de depuração chatas: depurando com
set-x
, encontrei a conclusão que estava pendurada em:Confirme: eu confirmei isso com o
ls ~*
qual também penduramos. Acontece que meu servidor ldap estava lento, mas isso não deve afetar coisas como a conclusão do bash e o ls!Solução: Ah, existe um bug arquivado no bash-conclusão + ldap, ele será corrigido em uma versão mais recente e um patch simples, se você não quiser esperar. A conclusão da guia é rápida novamente, viva!
Aqui está o patchfile no caso de o link desaparecer. É apenas escapar do ~ nas linhas 545 e 547:
Você precisa sair da sessão ssh atual e efetuar login novamente para que esse patch entre em vigor.
fonte
Tente reinstalar a conclusão do bash
Para mim, isso é corrigido no Ubuntu 18.04.3 LTS
fonte
Além disso, algumas pessoas usam recursos extras automáticos extras, como o Git bash auto complete . A lentidão na conclusão da festança pode ser o resultado desses comportamentos extras de conclusão automática automática.
No meu caso, foi o Git bash auto complete, minha chave pública git havia sido atualizada e estava fazendo uma tentativa de autenticação com falha, causando um travamento. Depois que eu removi o auto complete, ele foi rápido novamente. Portanto, minha solução foi consertar minha chave e reativá-la.
fonte