Cuando escribí mal el comando en la terminal recibí este error:
bash: XX: command not found...
Después de eso, tengo que esperar o usar la interrupción del teclado antes de poder usar el mensaje nuevamente. A veces Shell me ofrece instalar algún comando y eso es bastante molesto.
¿Hay alguna manera de deshacerse de este retraso?
Gracias por las respuestas
Respuesta1
El retraso se debe a una costumbre.controlador de comando no encontradoagregado por su distribución. Por lo general, se agrega en algún lugar del /etc/bash.bashrc
archivo de todo el sistema.
El controlador es solo una función de shell con un nombre específico, por lo que también puede deshabilitarlo o anularlo mediante~/.bashrc(por ejemplo, si no desea cambiar la configuración de todo el sistema).
Si el controlador de la distribución está siendo demasiado lento, simplemente puede eliminar ( unset -f
) la función y volver al comportamiento estándar de bash:
unset -f command_not_found_handle
Por otro lado, si no te gusta elmensaje, luego puedes definir tu propia versión del controlador (nuevamente a través de ~/.bashrc):
command_not_found_handle() {
echo "I don't know what '$1' is." >&2
return 1
}
Respuesta2
Otro método es desinstalar el paquete que proporciona el ejecutable pk-command-not-found
; en mi Rocky Linux 9 command_not_found_handle
se ve así:
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;
Entonces puedes ver que depende de ese /usr/libexec/pk-command-not-found
ejecutable.
En un sistema tipo Red Hat, puede hacer esto para averiguar qué paquete es y desinstalarlo:
# 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
Esto cambia todo el sistema, todos los usuarios se verían afectados.
Ah, y 2>&1
es solo la redirección del identificador de archivos bash. Literalmente significa "enviar mi stderr a lo mismo que stdout".