La sección de estándares POSIX en shells de IEEE Std 1003.1-2008 / IEEE POSIX P1003.2/ISO 9945.2 El estándar Shell and Tools no define la convención léxica para nombres de variables, sin embargo, una mirada superficial a la fuente revela que usa algo similar a
[a-zA-Z_]+[a-zA-Z0-9_]*
(Editar:Se agregó un guión bajo faltante en la segunda clase de carácter).
Una nota rápida, ya que algunos shells no admiten el + en expresiones regulares, una expresión regular potencialmente más portátil puede ser:
[a-zA-Z_]{1,}[a-zA-Z0-9_]{0,}
Del Grupo Abierto:
Estas cadenas tienen el nombre de formulario =valor; los nombres no deben contener el carácter '='. Para que los valores sean portátiles entre sistemas que cumplan con IEEE Std 1003.1-2001, el valor debe estar compuesto por caracteres del conjunto de caracteres portátiles (excepto NUL y como se indica a continuación ).
Por lo tanto, los nombres pueden contener cualquier carácter excepto =y NUL, pero:
Los nombres de variables de entorno utilizados por las utilidades en el volumen Shell andUtilities de IEEE Std1003.1-2001 consisten únicamente en letras mayúsculas, dígitos y el '_' (guión bajo) de los caracteres definidos en el Conjunto de caracteres portátil y no comience con un dígito . Se pueden permitir otros caracteres mediante una implementación; las aplicaciones tolerarán la presencia de dichos nombres.
Entonces, si bien los nombres pueden ser válidos, es posible que su shell no admita nada más que letras, números y guiones bajos.