Allowed characters in Linux environment variable names

From The Open Group:

These strings have the form
name=value; names shall not contain
the character ‘=’.
For values to be
portable across systems conforming to
IEEE Std 1003.1-2001, the value shall
be composed of characters from the
portable character set (except NUL
and as indicated below
).

So names may contain any character except = and NUL, but:

Environment variable names used by the utilities in the Shell and
Utilities volume of IEEE Std
1003.1-2001 consist solely of uppercase letters, digits, and the ‘_’
(underscore)
from the characters
defined in Portable Character Set and
do not begin with a digit
. Other
characters may be permitted by an
implementation; applications shall
tolerate the presence of such names.

So while the names may be valid, your shell might not support anything besides letters, numbers, and underscores.

Leave a Comment