Quando digito errado o comando no terminal, recebo este erro:
bash: XX: command not found...
Depois disso, tenho que esperar ou usar a interrupção do teclado antes de poder usar o prompt novamente. Às vezes, o shell me oferece para instalar algum comando e isso é muito chato.
Existe alguma maneira de se livrar desse atraso?
Obrigado pelas respostas
Responder1
O atraso é causado por um costumemanipulador de comando não encontradoadicionado pela sua distribuição. Geralmente é adicionado em algum lugar do /etc/bash.bashrc
arquivo de todo o sistema.
O manipulador é apenas uma função shell com um nome específico, então você também pode desabilitá-lo ou substituí-lo via~/.bashrc(por exemplo, se você não quiser alterar a configuração de todo o sistema).
Se o manipulador da distribuição estiver muito lento, você pode simplesmente remover ( unset -f
) a função e retornar ao comportamento padrão do bash:
unset -f command_not_found_handle
Por outro lado, se você não gosta domensagem, então você pode definir sua própria versão do manipulador (novamente via ~/.bashrc):
command_not_found_handle() {
echo "I don't know what '$1' is." >&2
return 1
}
Responder2
Outro método é desinstalar o pacote que fornece o executável pk-command-not-found
- no meu Rocky Linux 9 command_not_found_handle
fica assim:
command_not_found_handle ()
[[ ! -x '/usr/libexec/pk-command-not-found' ]] && runcnf=0;
'/usr/libexec/pk-command-not-found' "$@";
printf 'bash: %scommand not found\n' "${1:+$1: }" 1>&2;
Então você pode ver que depende desse /usr/libexec/pk-command-not-found
executável.
Em um sistema semelhante ao Red Hat, você pode fazer isso para descobrir qual pacote é e desinstalá-lo:
# rpm -qf /usr/libexec/pk-command-not-found
PackageKit-command-not-found-1.2.4-2.el9.x86_64
# dnf remove PackageKit-command-not-found
Isso altera todo o sistema, todos os usuários seriam afetados.
Ah, e 2>&1
é apenas um redirecionamento de identificador de arquivo bash. Literalmente significa "enviar meu stderr para a mesma coisa que stdout".