환경 변수(특히 PATH)를 설정하고 Windows 10의 cmd에서 cd를 사용할 때 발생하는 문제

환경 변수(특히 PATH)를 설정하고 Windows 10의 cmd에서 cd를 사용할 때 발생하는 문제

나는 다음을 팔로우하고 있습니다.지도 시간Apache Storm을 설정합니다. (그건 단지 맥락을 위한 것입니다. 제 실수에는 별로 중요하지 않습니다.)

따라서 일부 환경 변수, 특히 %JAVA_HOME%%STORM_HOME%as C:\Java\jdk1.8.0_60\및 를 C:\storm-0.9.1-incubating-SNAPSHOT-12182013\각각 설정하라는 메시지가 표시됩니다. 저는 이런 일을 한 번도 해본 적이 없어서 어떻게 해야 할지 찾아보고 다음과 같이 실행했습니다.

C:\>setx %JAVA_HOME% C:\JAVA\jdk1.8.0_60\

그리고 그것은 다음을 주었다:SUCCESS: Specified value was saved.

그런 다음 나는 다음을 수행했습니다.

C:\>setx %STORM_HOME% C:\storm-0.9.1-incubating-SNAPSHOT-12182013\

그리고 그것은 같은 것을 주었다:SUCCESS: Specified value was saved.

그런 다음 튜토리얼 %STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;에서는 PATH. 나는 C:\>PATH그것이 현재 무엇인지 확인하기 위해 들어갔고 그것은 다음과 같습니다:

PATH=C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\

그래서 나는 그것에 추가 할 수 있다고 생각했습니다

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\; 

즉, 방금 전화를 걸어 setx현재 PATH상태로 설정하고 튜토리얼에서 말하는 내용을 끝에 추가했습니다. 그러나 SUCCESS: Specified value was saved.내가 입력할 때:

C:\>PATH

원래 있던 내용을 반환합니다(추가하려고 시도한 내용은 거기에 없습니다). 나는 다른 방법을 시도했다. 나는 달렸다

C:\>PATH=%PATH%;%STORM_HOME%\bin;%JAVA_HOME%\bin;C:\Python27;C:\Python27\Lib\site-packages\;C:\Python27\Scripts\;

그런 다음 입력하면 C:\>PATH추가하려는 항목이 추가된 전체 PATH가 반환되었습니다.

지금 직면한 문제는 이러한 변수를 사용하는 것입니다. 내가 들어갈 때

C:\>cd %STORM_HOME%

The system cannot find the path specified.컴퓨터를 다시 시작해 보았으나 PATH재설정되었으며 여전히 같은 오류가 발생한다고 합니다 .

답변1

@DavidPostill은 정확하지만 실제로 문제를 해결하지는 않습니다. 실제 대답은 훨씬 간단합니다. 다른 프로그램과 마찬가지로 명령 프롬프트는 시작 시 환경 변수를 받습니다. 영구 환경 변수(사용자별 또는 시스템 전체)를 설정하면 향후 프로세스에 대한 환경 변수를 결정하는 레지스트리 값이 변경됩니다.실제로 환경 변수는 변경되지 않습니다.현재의과정을 전혀!

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.

이 문제를 해결하는 방법에는 두 가지가 있습니다. 간단한 방법은 문서에서 알 수 있듯이 새 CMD 인스턴스를 시작하는 것입니다. 충분히 쉽지만 명령 기록 등이 없습니다. 더 복잡한 것은 로컬 환경 변수를 설정하는 것입니다(명령 사용 set). 이를 수행하는 가장 좋은 방법은 실제로 set먼저 사용한 다음 setx현재 환경 변수를 사용하여 호출하는 것입니다. 위에서 수행한 작업의 예는 다음과 같습니다.

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%

%문자 사용에 유의하세요 . 환경 변수를 참조할 때가 아니라 환경 변수를 확장할 때 사용합니다. 위의 줄 은 setx"사용자 전체 환경 변수 JAVA_HOME을 이 프로세스의 현재 로컬 값 JAVA_HOME으로 설정"으로 처리됩니다. 이는 "영구 환경 변수 JAVA_HOME을 C:\JAVA\jdk1.8.0_60\" 으로 설정"이라고 말하는 것과 동일합니다. 현재 프로세스.

답변2

SETX가 내 PATH를 업데이트하지 않은 이유

setx 경로 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\;

구문 setx이 잘못되었습니다.

  • "두 번째 매개변수('값') 주위에 따옴표를 붙입니다 .

    %PATH%두 번째 매개변수에 공백이 포함되어 있고 거의 항상 공백이 포함되어 있으면 따옴표로 묶어야 합니다 .

다음을 사용해야 합니다.

setx PATH "%PATH%;%STORM_HOME%\bin;%JAVA_HOME%\bin"

또는:

setx PATH "%STORM_HOME%\bin;%JAVA_HOME%\bin;%PATH%"

통사론

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]

원천세트스


추가 자료

  • Windows CMD 명령줄의 AZ 인덱스- Windows cmd 라인과 관련된 모든 것에 대한 훌륭한 참고 자료입니다.
  • 세트스- 환경 변수를 영구적으로 설정합니다. SETX를 사용하여 컴퓨터(HKLM) 또는 현재 로그온한 사용자(HKCU)에 대한 환경 변수를 설정할 수 있습니다.

관련 정보