Я никогда не встречал оболочку в стиле Борна, которая допускала -
бы имя переменной. _
Поддерживаются только буквы ASCII (в любом случае) и цифры, и первый символ не должен быть цифрой.
Если у вас есть программа, для которой требуется переменная среды, которая не соответствует ограничениям оболочки, запустите ее вместе с env
программой.
env 'strange-name=some value' myprogram
Обратите внимание, что некоторые оболочки (например, современные dash , mksh, zsh) удаляют переменные, имена которых им не нравятся, из среды. ( Shellshock заставил людей быть более осторожными в отношении имен переменных среды, поэтому ограничения, вероятно, со временем станут более жесткими, а не более жесткими.) Поэтому, если вам нужно передать в программу переменную, имя которой содержит специальный символ, передайте ее напрямую, без оболочки между ( env 'strange-name=some value' sh -c'…; myprogram'
может или не может работать).