Livrar-se do "comando não encontrado..."

Livrar-se do "comando não encontrado..."

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.bashrcarquivo 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_handlefica 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-foundexecutá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".

informação relacionada