%20y%20el%20uso%20de%20cd%20con%20ellas%20en%20cmd%20en%20Windows%2010.png)
estoy siguiendo untutorialpara configurar Apache Storm. (Eso es sólo por contexto; realmente no importa por mi error).
Entonces me dice que establezca algunas variables de entorno, específicamente %JAVA_HOME%
y %STORM_HOME%
as C:\Java\jdk1.8.0_60\
y C:\storm-0.9.1-incubating-SNAPSHOT-12182013\
, respectivamente. Nunca había hecho este tipo de cosas antes, así que busqué cómo hacerlo y ejecuté:
C:\>setx %JAVA_HOME% C:\JAVA\jdk1.8.0_60\
y dio:SUCCESS: Specified value was saved.
Entonces hice:
C:\>setx %STORM_HOME% C:\storm-0.9.1-incubating-SNAPSHOT-12182013\
y me dio lo mismo:SUCCESS: Specified value was saved.
Luego, el tutorial dice que se agregue %STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;
a PATH
. Entré C:\>PATH
para ver cuál es actualmente y me dio:
PATH=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
Entonces pensé que podría agregarle algo más haciendo
C:\>setx PATH C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;
En otras palabras, simplemente intenté llamar setx
y PATH
lo configuré como está actualmente y con lo que dice el tutorial adjunto al final. Dio SUCCESS: Specified value was saved.
Sin embargo, cuando entro:
C:\>PATH
devuelve lo que era originalmente (lo que intenté agregar no está allí). Probé otro método. yo corrí
C:\>PATH=%PATH%;%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;
Luego, cuando entré, C:\>PATH
devolvió la RUTA completa con las cosas que quería agregar adjuntas.
El problema al que me enfrento ahora es el uso de estas variables. cuando entro
C:\>cd %STORM_HOME%
Dice que The system cannot find the path specified.
intenté reiniciar mi computadora pero PATH
la reinicié y sigo recibiendo el mismo error.
Respuesta1
@DavidPostill tiene razón, pero en realidad no resuelve su problema. La respuesta real es mucho más simple: el símbolo del sistema, como cualquier programa, recibe su variable de entorno al inicio. Cuando configura una variable de entorno persistente (ya sea por usuario o para todo el sistema), está cambiando los valores de registro que determinan las variables de entorno para procesos futuros.En realidad, no estás cambiando ninguna variable de entorno en elactualproceso en absoluto!
De la documentación de ayuda de SETX ( setx /?
):
2) On a local system, variables created or modified by this tool will be available in future command windows but not in the current CMD.exe command window.
Hay dos maneras de abordar esto. La sencilla es, como indica la documentación, iniciar una nueva instancia de CMD. Eso es bastante fácil, pero entonces no tendrá su historial de comandos, etc. La más complicada es configurar las variables de entorno local (use el set
comando). La mejor manera de hacer esto es usar set
primero y luego invocar setx
usando las variables de entorno actuales. Aquí hay un ejemplo, de lo que está haciendo arriba:
REM Set the local version of JAVA_HOME
set JAVA_HOME=C:\JAVA\jdk1.8.0_60\
REM Set the local version of STORM_HOME
set STORM_HOME=C:\storm-0.9.1-incubating-SNAPSHOT-12182013\
REM Append the new values to PATH
set PATH=%PATH%;%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;
REM Do whatever checks you want to do to confirm that those are set correctly
cd %STORM_HOME%
REM Now, save the current (local) values of the environment variables
REM to persistent storage (registry)
setx JAVA_HOME %JAVA_HOME%
setx STORM_HOME %STORM_HOME%
setx PATH %PATH%
Tenga en cuenta el uso de %
personajes. Los usa cuando va a expandir una variable de entorno, no cuando quiere hacer referencia a una. Las setx
líneas anteriores se procesan como "Establezca la variable de entorno JAVA_HOME para todo el usuario en el valor local actual de este proceso de JAVA_HOME", lo que equivale a decir "Establezca la variable de entorno persistente JAVA_HOME en C:\JAVA\jdk1.8.0_60\
" porque eso es a lo que %JAVA_HOME% se expande en el proceso actual.
Respuesta2
¿Por qué SETX no actualizó mi RUTA?
setx RUTA C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%STORM_HOME %\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;
Tu setx
sintaxis es incorrecta:
Coloque las comillas
"
alrededor del segundo parámetro (el 'valor').El segundo parámetro debe citarse si contiene espacios y
%PATH%
casi siempre contiene espacios.
Deberías utilizar:
setx PATH "%PATH%;%STORM_HOME%\bin;%JAVA_HOME%\bin"
O:
setx PATH "%STORM_HOME%\bin;%JAVA_HOME%\bin;%PATH%"
Sintaxis
SETX [/s Computer [Credentials]] Variable Value [/m] SETX [/s Computer [Credentials]] [Variable] /k RegistryPath [/m] SETX [/s Computer [Credentials]] /f FileName {[Variable] {/a L,T | /r oL,oT "SearchString"} [/m] | /x} [/d Delimiters]
Fuentesetx
Otras lecturas
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
- setx- Configure las variables de entorno de forma permanente, SETX se puede usar para configurar las variables de entorno para la máquina (HKLM) o el usuario actualmente conectado (HKCU).