Las variables envueltas por signo de porcentaje no funcionan como variable ambiental

Las variables envueltas por signo de porcentaje no funcionan como variable ambiental

Como puede ver, definí JAVA_HOME y M2_HOME para Java y Maven y agregué a la ruta Variables ambientales: ingrese la descripción de la imagen aquí

Cuando intento ejecutar el comando java o mvn, funcionan bien en powershell en la terminal de Windows.

mvn en terminal de Windows y PowerShell: ingrese la descripción de la imagen aquí

Pero no funciona si abro un nuevo powershell o cmd ingrese la descripción de la imagen aquí

¿Alguna idea de por qué están trabajando dentro de la terminal de Windows y no en PowerShell independiente? Si la variable no está ajustada por % % entonces no hay problema, funciona bien. Por ejemplo, en la primera captura de pantalla, nvm funciona bien tanto en el terminal de Windows como en PowerShell.

Respuesta1

Parece que encontró una solución, pero aquí está la razón por la que sucede:

Usted establece JAVA_HOMEy M2_HOMEvariables en suusuarioentorno, pero los agregó a susistemaRUTA del entorno. En ese caso, tiene un problema de condición de carrera al configurar las variables de entorno. En Windows, segúnss64:

Cuando se inicia un nuevo proceso, las variables se cargarán en el siguiente orden:

  • Variables de entorno del sistema
  • Variables de Shell (por usuario)
  • Variables de entorno de usuario
  • Variables de Shell (otras)

Así que normalmente no puedes configurarusuariovariables de entorno dentrosistemaunos y hacer que se expandan correctamente. Parece que la nueva Terminal de Windows puede comportarse en orden inverso o manejar la expansión de PATH de manera diferente, pero eso no garantiza que otros procesos se comportarán.

Esto es lo que debe buscar:

# Powershell (core 7.2) terminal:
PS C:\Users\username> $env:path
C:\Program Files\PowerShell\7;%JAVA_HOME%;
                            # ^Bad, not expanded

# Windows Terminal, running Powershell 7.2:
PS C:\Users\username> $env:path
C:\Program Files\PowerShell\7;C:\Program Files\JavaFolder\jre\bin;
                            # ^Good

VS Code se comportará de cualquier manera, según el tipo de terminal que esté utilizando.


Funciona bien si los configuras todos en el mismo entorno, entonces:

  1. Añade JAVA_HOME/ M2_HOMEa tuusuarioRUTA y eliminar desistemaRUTA, o
  2. Establecer JAVA_HOMEcomoM2_HOMEsistemavariables en su lugar. (parece que esto funcionó para ti)

información relacionada