Considere o seguinte:
$ ksh -c '1(){ echo hi;};1'
ksh: 1: invalid function name
$ dash -c '1(){ echo hi;};1'
dash: 1: Syntax error: Bad function name
$ bash -c '1(){ echo hi;};1'
bash: `1': not a valid identifier
bash: 1: command not found
$ mksh -c '1(){ echo hi;};1'
hi
Basicamente, eu estava tentando declarar funções 1e 0quais seriam atalhos para truee false, mas como você pode ver, tive um problema ao usar nomes numéricos em funções. O mesmo comportamento ocorre com aliases e nomes de dois dígitos.
A pergunta é "por que"? É mandatado pelo POSIX? ou apenas uma peculiaridade de conchas tipo bourne?
Veja também a pergunta relacionada a este.
0está trueno script de shell e 1é false(realmente, qualquer diferente de zero é tratado como falso), caso alguém que esteja lendo isso não saiba. Isso é inverso da maioria das outras linguagens de programação.
trueno shell. No entanto, na expansão aritmética, os $((...))status de retorno são invertidos - 1 é truee 0 é falseconsistente com a sintaxe da linguagem C. Tente, por exemplo, o bash -c 'echo $((1==1));echo $((1==2))' que eu estava tentando fazer fora desta questão era, na verdade, "reverter" o comportamento. Veja o último exemplo da minha resposta aqui para ver o que exatamente eu estava tentando fazer. Parva ideia, mas mesmo assim funciona