Eu nunca conheci um shell no estilo Bourne que permitia -
um nome de variável. Apenas letras ASCII (dos dois casos) _
e dígitos são suportados, e o primeiro caractere não deve ser um dígito.
Se você possui um programa que requer uma variável de ambiente que não corresponde às restrições do shell, inicie-o com o env
programa.
env 'strange-name=some value' myprogram
Observe que alguns shells (por exemplo , traço moderno , mksh, zsh) removem variáveis cujo nome não gostam do ambiente. (O Shellshock fez com que as pessoas fossem mais cautelosas em relação aos nomes de variáveis de ambiente; portanto, é provável que as restrições se tornem mais rígidas ao longo do tempo, não mais permissivas.) Portanto, se você precisar passar uma variável cujo nome contenha caracteres especiais para um programa, passe-a diretamente, sem uma concha no meio ( env 'strange-name=some value' sh -c'…; myprogram'
pode ou não funcionar).