Acredito que esse endereço seja direto para o que você pergunta:
2.10.2 Shell Grammar Rules
-
[Command Name]
When the TOKEN is exactly a reserved word, the token identifier for that reserved word shall result. Otherwise, the token WORD shall be returned.
Essa é a regra 1, muito antes da regra 7. Qualquer palavra única (que não contenha =
) será interpretada como um "nome do comando". Se ele contiver um =
, o número da regra 7 será aplicado.
Pode-se argumentar que a regra 1 não tem a exceção para a inclusão de um =, mas eu acho que isso deve ser assumido a partir da descrição de " Comandos simples ":
2.9.1 Simple Commands
A "simple command" is a sequence of optional variable assignments and redirections, in any sequence, optionally followed by words and redirections, terminated by a control operator.
Em resumo: 'atribuições de variáveis' 'palavras' 'redirecionamentos'
E: 'atribuições de variáveis' devem conter um =
.