systemadmin.es > Script > command_not_found_handle de bash

command_not_found_handle de bash

A partir de la versión 4 de bash existe un handle para poder definir que acción hacer en el caso que el usuario no introduzca un comando válido en lugar de únicamente mostrar “command not found

Para definir este handle simplemente deberemos crear una función que ejecute cualquier acción. Dicha función tiene como parámetros el comando que no encuentra. Por ejemplo:

$ command_not_found_handle() { echo eres bobo - $@ - no es un comando; }
$ dsafads
eres bobo - dsafads - no es un comando

Para hacer la función permanente simplemente deberemos añadirla al /etc/profile

Para el caso de Fedora, usa este handle de bash para realizar sugerencias:

$ openx
bash: openx: command not found...
Similar command is: 'open'

O sugerir la instalación de paquetes:

$ sl
bash: sl: command not found...
Install package 'sl' to provide command 'sl'? [N/y] 

Además de introducir un cierto retardo en el tiempo de respuesta de la shell, lo cual me resulta muy molesto. El paquete que incluye el fichero /etc/profile.d/PackageKit.sh, en Fedora 15, con la definición del handle es PackageKit-command-not-found:

$ rpm -qf /etc/profile.d/PackageKit.sh 
PackageKit-command-not-found-0.6.16-1.fc15.i686

Eliminando dicho paquete con rpm -e deshabilitaremos dicha característica.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>