Eu nunca encontrei um shell estilo Bourne que permitisse -
em um nome de variável. Somente letras ASCII (de qualquer um dos casos), _
e dígitos são suportados e o primeiro caractere não deve ser um dígito.
Se você tiver um programa que requer uma variável de ambiente que não corresponda às restrições do shell, inicie-o com o programa env
.
env 'strange-name=some value' myprogram
Observe que alguns shells (por exemplo, traço moderno , mksh, zsh) remova as variáveis cujo nome elas não gostam do ambiente. ( Shellshock fez com que as pessoas fossem mais cautelosas com relação aos nomes das variáveis de ambiente, portanto as restrições provavelmente se tornarão mais rigorosas com o tempo Portanto, se você precisar passar uma variável cujo nome contenha um caractere especial para um programa, passe-a diretamente, sem um shell intermediário ( env 'strange-name=some value' sh -c'…; myprogram'
pode ou não funcionar).