En Windows 7 he agregado dos variables de entorno de usuario:
M2_HOME %PROGRAMFILES%\Apache\apache-maven-3.0.2
M2 %M2_HOME%\bin
En mi cabeza, ambos deberían funcionar, sin embargo, solo el primero lo hace por alguna razón. Lo que quiero decir es que en un símbolo del sistema puedo escribir
cd %M2_HOME%
Lo que funciona bien, pero
cd %M2%
Lo cual no. ¿Que está pasando aqui?

Respuestas:
Parece que hay un error con las variables de entorno anidadas en Windows 7 (tal vez otras versiones también, no estoy seguro) donde si el nombre de la variable de nivel superior viene antes del nombre de la variable anidada alfabéticamente, no se expandirá .
En su caso, la variable de nivel superior
M2aparece antes de la variable anidadaM2_HOMEcuando se ordena alfabéticamente. Si cambiaM2a algo que viene despuésM2_HOME(por ejemplo,M3), verá que funciona según lo previsto.fuente
M2a algo comoM3o incluso algo asíM2_PATHfuncionaría, siempre que sea algo que viene despuésM2_HOMEen comparación alfabéticamente. Alternativamente, puede editarM2_HOMEe ingresar manualmente el directorio de archivos de programa en lugar de usarlo%PROGRAMFILES%, ya que el error solo parece ocurrir cuando tiene anidamiento de más de dos niveles.