¿Por qué los parámetros del "comando" y el "tipo" de Bash son opcionales?

¿Por qué los parámetros del "comando" y el "tipo" de Bash son opcionales?

Similar a¿Por qué los parámetros del sistema integrado de Bash son opcionales?, estos comandos no imprimen nada y devuelven el código de salida 0 si no se proporcionan parámetros. Pero a diferencia de builtin, su helpresultado indica queal menos un parámetro es obligatorio. ¿Es esto un error, una característica o entendí mal algo?

$ bash --version
GNU bash, version 4.2.10(1)-release (x86_64-pc-linux-gnu)
$ type -a command
command is a shell builtin
$ type -a type
type is a shell builtin
$ help -s command
command: command [-pVv] command [arg ...]
$ help -s type
type: type [-afptP] name [name ...]
$ command
$ echo $?
0
$ type
$ echo $?
0

Respuesta1

POSIX cree que el parámetro de comando es obligatorio. Entonces podría ser un error.

Especificación del comando POSIX 2008

Respuesta2

Para command, la explicación inmediata es probablemente que ksh hace lo mismo (al menos ATT ksh93, pdksh y mksh no hacen nada cuando se ejecuta commandsin argumentos, no tengo ATT ksh88 para probar).

Por qué ksh se comporta de esa manera, no lo sé. Una explicación tentativa es que command foose parece mucho a foo, y si omite foo, obtendrá un comando de shell que no hace nada (pero aún realiza redirecciones). Curiosamente, con ksh 93s+ 2008-01-31 (pero no con pdksh, mksh, bash, ash o zsh), ksh -c 'foo=bar command; echo $foo'se muestra bar, lo que significa que la asignación se trata como una asignación de variable de shell y no como una asignación de entorno local de comando. Este comportamiento se espera sólo deutilidades integradas especiales, cualcommandno lo es (la justificación explica por qué no). Esto parece un error en ksh93.

En ksh, builtinmuestra una lista de utilidades integradas, lo cual es útil.

typeEs un caso diferente: acepta múltiples argumentos e informa sobre cada uno de ellos por turno (p. ej type ls cd.). Tener cero argumentos es una continuación natural de este comportamiento.

información relacionada