Em bash , a expansão de {word} é {word} quando a palavra não contém um intervalo ( .. ) ou uma vírgula.
No seu caso, word contém duas expansões de chave. Eles são expandidos da esquerda para a direita, de modo que você obtém, primeiro, {a.{c,d}} {b.{c,d}} e, em seguida, {a.c} {a.d} {b.c} {b.d} , que é o resultado final.
Observe que as chaves externas não são expandidas, pois não contêm um intervalo ou uma vírgula. Você obteria um resultado semelhante com @{a,b}.{c,d}@ .
Se você tivesse tentado {{a,b},{c,d}} , teria três expansões (a expansão é feita em três etapas, cada uma expandindo um conjunto de chaves). Primeiro o externo em {a,b} {c,d} e depois o esquerdo em a b {c,d} , e finalmente a b c d , que é o resultado final.
Veja também: Por que "cat {foo}" não gera foo, mas "cat {foo, bar}" faz?