bash
tiene un comando interno llamado kill
, y también en Linux, hay un comando externo (programa) llamado kill
.
Cuando ejecuto kill
en , se ejecuta bash
el comando interno .kill
Tengo dos preguntas:
- ¿Existe alguna configuración que pueda cambiar para que se ejecute el comando externo en lugar del comando interno de forma predeterminada (sin especificar la ruta completa del comando externo, por supuesto)?
- ¿Es un comportamiento estándar que el comando interno se ejecute en lugar del comando externo de forma predeterminada en todos los shells (principales), o es solo una
bash
cosa?
Respuesta1
Úselo
env
para invocarlo.$ env kill kill: not enough arguments $ kill kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Todos los shells y procesadores de comando.
Respuesta2
A su primera pregunta: Sí, hay una configuración para hacer que se ejecute el comando externo en lugar del comando interno de forma predeterminada.
Puedes desactivar el incorporado
enable -n COMMAND
Puedes activarlo mediante
enable COMMAND
o puede cambiar la prioridad del comando. La prioridad del comando bash es:
- alias, es el más alto
- función
- incorporado
- comando externo en $PATH
A su segunda pregunta: creo que siempre se puede asumir que el comando interno es anterior al comando externo. No es sólo una cuestión de bash.