¿Cómo agrego variables de entorno definidas por el usuario a la variable de sistema PATH en Windows 7?

9

Tengo dos variables definidas por el usuario:

ANT_HOME establecido en% USERPROFILE% \ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME establecido en C: \ Archivos de programa \ Java \ jdk1.6.0_23

Y quiero agregar esas rutas a la variable Sistema para poder acceder a los ejecutables en sus carpetas bin. Lo intenté

RUTA establecida en [otras rutas];% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Sin embargo, eso no funciona. Cuando abro un símbolo del sistema y echo% PATH%, las variables de usuario no se expanden . Entonces, la ruta solo muestra el literal,;% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Me parece recordar que esto funciona bien en mis viejos sistemas Windows XP. ¿Cómo configuro esto en Windows 7?

Michael Prescott
fuente
Acabo de encontrar un artículo de Soporte de Microsoft en 2007 que describía un error en Shell32.dll. Agregué una variable PATH a mi lista de variables de usuario con PATH establecido en% PATH%;% ANT_HOME% \ bin;% JAVA_HOME% \ bin y solucioné el problema. No me gusta configurarlo solo para mi usuario, pero de alguna manera mi sistema presenta el síntoma de este viejo error y todavía no veo otra respuesta mejor. El artículo está en: support.microsoft.com/kb/329308
Michael Prescott

Respuestas:

5

ACTUALIZACIÓN NO.2 - Ahora a la pregunta real : ¿Por qué las variables anidadas y creadas por el usuario no se expanden?

Hay algunos problemas generales relacionados con la expansión variable en Windows. Ya me he encontrado con el mismo problema y no he encontrado circunstancias claras y reproducibles: el nivel de recursión en el que falla la expansión no es consistente, los caracteres especiales no parecen jugar un papel, etc.

La única solución viable que encontré es agregar variables de nivel de recursión por nivel de recursión. Eso significa: intente eliminar todas las variables que desea anidar entre sí (incluidas las llamadas de PATH a las variables definidas por el usuario), y luego comience desde cero. Defina sus variables básicas (etc. ANT-HOME), comprométase, verifique si está expandido, si es así, continúe con el siguiente nivel de compromiso, verifique ... tiene la idea.

RESPUESTA ACTUALIZADA: definición de variables de entorno permanentes utilizando la CLI y la GUI : desplácese hacia abajo para obtener la respuesta original

Método GUI:

En Windows 7, simplemente escriba "sistema" en el indicador META y verá una entrada "Editar las variables de entorno del sistema". Desde allí, haga clic en "Variables de entorno". Allí, puede editar la variable PATH del sistema (lista inferior) o agregar / editar una nueva variable PATH a las variables de entorno del usuario.

Método de línea de comando:

Para cambiar las variables de entorno de forma permanente, debe usar el comando SETX en la línea de comandos de Windows. A diferencia de otras versiones de Windows, viene integrado con Windows 7. Su sintaxis difiere mucho de SET, pero también es potente. Sin embargo, tendrá que tener un poco de cuidado, es fácil hacer un lío de sus variables con SETX.

  • Por defecto, cambia las variables de usuario . Puede tener una variable de entorno de usuario PATH que coexista felizmente con la variable PATH del sistema. Si aún no lo tiene definido, hágalo escribiendo:SETX PATH yourpath

  • También puede agregar un valor a la variable de sistema PATH. Para hacer esto, primero debe abrir una línea de comando con privilegios de administrador. Para hacer esto, presione la tecla Meta (Windows), escriba cmdy presione CTRL+ SHIFT+ ENTERy confirme el cuadro de diálogo UAC.

Para agregar nuevos valores a la ruta, ahora puede ingresar

setx path "%path%;yournewpath" /m

¡Es importante seguir esa sintaxis! Si no incluye primero% path%, todos los valores existentes de path se perderán y se reemplazarán solo con su nueva ruta. El modificador / m al final establece la variable en el entorno del sistema.

Tenga en cuenta que deberá abrir una nueva línea de comando para utilizar su nueva variable.

También hay una referencia completa para SETX en TechNet .

ANTIGUA RESPUESTA El comando SET actualiza las variables solo durante la sesión de línea de comando actual.

La sintaxis correcta para agregar un valor a una variable es 'set [variable] =% [variable]%; [nuevo valor] `

Tenga en cuenta que a la izquierda del signo igual, ¡debe omitir los signos de porcentaje!

Fuente: referencia de línea de comandos de TechNet para Windows Server

Tobias Plutat
fuente
1
Gracias por una respuesta muy detallada. Personalmente, siempre he preferido el método GUI porque creo que es más fácil comunicarme con mi equipo. He resaltado el problema que tengo en mi publicación original para mayor claridad. Las variables de usuario no se expanden en Windows 7 como lo hicieron en Windows XP. ¿Esto ya no funciona o debería estar investigando la seguridad u otra configuración del administrador del sistema que pueda estar bloqueando el comportamiento habitual?
Michael Prescott
Esa es una muy buena manera de decir "Estás completamente fuera de lugar";)
Tobias Plutat
... y ahora mis 2 centavos en la pregunta real. Ver la más nueva edición de respuestas.
Tobias Plutat
1

Un artículo de soporte de Microsoft de 2007, número 329308 , describe un error en Shell32.dll, que es la causa de este problema. La solución es agregar una PATHvariable a la lista de variables de usuario que se establece en

%ANT_HOME%\bin;%JAVA_HOME%\bin

Esto solucionó el problema. No me gusta configurarlo solo para mi usuario, pero de alguna manera mi sistema presenta síntomas de este viejo error y todavía no veo otra respuesta mejor.

Michael Prescott
fuente