Por que um longo atraso após o comando não foi encontrado?


18

Freqüentemente, quando digito errado um comando como ls (por exemplo, pressione ENTER antes de digitar 's'), ocorre um longo atraso (~ 2s) após a exibição do terminal:

bash: l: command not found...

Entendo os motivos de um atraso semelhante após a inserção de uma senha incorreta, por Por que ocorre um grande atraso após a inserção de uma senha incorreta? . Mas por que atrasar após um comando não reconhecido? Será que FAIL_DELAYno /etc/login.defsafetam isso também?


8
Talvez o Fedora agora também esteja usando aquela horrível falha do Ubuntu que diz "Este programa não está instalado, para instalá-lo, digite ..."? O atraso é causado pela pesquisa no banco de dados de todos os pacotes instaláveis. Tente chamar o psql (parte do PostgreSQL), que provavelmente não está instalado por padrão, mas espera-se que esteja nos repositórios.
Ulrich Schwarz

O que produz echo "$PROMPT_COMMAND"?
rozcietrzewiacz

echo "$ PROMPT_COMMAND": printf "\ 033] 0;% s @% s:% s \ 007" "$ {USER}" "$ {HOSTNAME %%. *}" "$ {PWD / # $ HOME / ~ } "
paislee 29/11

que eco $ PATH imprime? seu sistema é verificado lá toda vez que você pressiona a tecla Enter.
Hanan N. 29/11

Respostas:


19

depois de alguma pesquisa eu encontrei isso :

  • tente desinstalar o pacote comando não encontrado $>yum remove command-not-founde instale-o novamente com >$yum install command-not-found(caso você tenha esse pacote instalado no sistema).

se isso não ajudar, tente:

  • adicione isso ao seu ~/.bashrcarquivo:

    unset command_not_found_handle


2
A segunda sugestão removeu o atraso. Eu não tenho o comando do pacote não encontrado instalado. Obrigado!
31511 paislee

Eu questiono o julgamento de quem pensou que era uma boa idéia habilitar isso por padrão
fostandy

16

Eu descobri que a melhor solução, pelo menos no Fedora, é modificar o arquivo de configuração
/etc/PackageKit/CommandNotFound.conf

como o maior atraso vem da busca por pacotes para instalar, se você modificar SoftwareSourceSearch=trueem SoftwareSourceSearch=false

o atraso é quase 0 e você ainda é avisado sobre erros de ortografia, o que pode ser útil.


3

O Fedora usa algo semelhante.

Se você deseja apenas remover esse recurso, use:

yum remove PackageKit-command-not-found

Acompanhamento: esqueci de mencionar que se você remover este pacote, você receberá uma mensagem de erro: bash: /usr/libexec/pk-command-not-found: No such file or directory Para corrigir isso, crie o arquivo após a remoção do pacote, / usr / libexec / pk-command-not-found com o seguinte: #!/bin/sh echo "Command not found: $1" Isso imprimirá: Comando não encontrado: fail-command

0

No meu caso, é devido a algum bug de proxy conhecido em / usr / libexec / pk-command-not-found

Failed to search for file: cannot update repo 'updates':
Cannot prepare internal mirrorlist:
Curl error (28): Timeout was reached for https://mirrors.fedoraproject.org/metalink?repo=updates-released-f28&arch=x86_64 
[Connection timed out after 30002 milliseconds]

Minha configuração de proxy está correta porque o download exato da mesma URL com um comando bare curl é bem-sucedido instantaneamente.

Eu verifiquei se o processo pk-command-not-found tem a configuração de proxy:

tr  '\0' '\n' < /proc/$(pgrep -f pk-command-not-found)/environ | grep -i proxy

No entanto, não o utiliza por algum motivo desconhecido.

https://bugzilla.redhat.com/show_bug.cgi?id=1553368

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.