La sezione standard POSIX sulle shell dello standard IEEE Std 1003.1-2008 / IEEE POSIX P1003.2/ISO 9945.2Shell and Tools non definisce la convenzione lessicale per i nomi delle variabili, tuttavia uno sguardo superficiale alla fonte rivela che utilizza qualcosa di simile a
[a-zA-Z_]+[a-zA-Z0-9_]*
(Modifica:aggiunto il trattino basso mancante nella seconda classe di caratteri.)
Una breve nota, dato che alcune shell non supportano il + in regex, una regex potenzialmente più portabile potrebbe essere:
[a-zA-Z_]{1,}[a-zA-Z0-9_]{0,}
Da The Open Group:
Queste stringhe hanno formname=value; i nomi non devono contenere il carattere '='. Affinché i valori possano essere portati su sistemi conformi aIEEE Std 1003.1-2001, il valore deve essere composto da caratteri del set di caratteri portabili (tranne NUL e come indicato di seguito ).
Quindi i nomi possono contenere qualsiasi carattere tranne =e NUL, ma:
I nomi delle variabili di ambiente utilizzati dalle utilità nel volume Shell andUtilities di IEEE Std1003.1-2001 sono costituiti esclusivamente da lettere maiuscole, cifre e '_' (trattino basso) dai caratteri definiti in Portable Character Set e non iniziano con una cifra . Altri caratteri possono essere consentiti da un'implementazione; le applicazioni devono tollerare la presenza di tali nomi.
Quindi, sebbene i nomi possano essere validi, la tua shell potrebbe non supportare nient'altro oltre a lettere, numeri e caratteri di sottolineatura.