sh , o shell Bourne, é antigo . Seu comportamento é especificado pelo padrão POSIX . Se você quiser um novo comportamento, use bash , o shell Bourne Again, que recebe novos recursos a cada momento. Em muitos sistemas, sh é apenas bash e bash ativa um modo de compatibilidade quando executado com esse nome. No Ubuntu, sh é dash , o shell do Debian Almquist.
A expansão de chaves é relativamente nova nova funcionalidade e também não estaria disponível em programas mais antigos. Certamente não deveria estar em sh .
A linha shebang só é respeitada se você chamar o script como um executável:
./myscript.sh
Eu posso dar um script a qualquer coisa e ainda tê-lo aberto em Python executando:
python myscript.sh
Veja estas excelentes perguntas sobre o Unix & amp; Linux: