왜 PATH 환경 변수에없는 프로그램을 실행할 수 있습니까?


9

왜 명령 java -version전 세계적으로 액세스 가능한지 궁금합니다 .

모든 디렉토리와 작업에서 실행할 수 있습니다.

여기에 이미지 설명을 입력하십시오

어떻게 작동합니까?

내 시스템 PATH변수는 다음과 같습니다.

C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

나에 관해서 java.exe%programfiles%\java\jre7\bin



현재로서는 세부 사항을 가지고 있지 않기 때문에 이것이 의견이며 대답이 아닌 이유입니다. 그러나 java.exe(또는 java.com등)가 귀하의 안에 없으면PATH 실행 경로를 지정할 수있는 다른 레지스트리 항목이 있습니다.
Mark Hurd

1
@MarkHurd cmd (및 CreateProcess)는 App Paths 레지스트리 항목을 검사하지 않으며 ShellExecute (및 실행 대화 상자) 만 검사합니다.
Random832

@MarkHurd, 예상 한대로 경로 변수에 없습니다 .
Pacerier

1
@Pacerier 자바 실행 파일은 % SystemRoot % \ System32 \에 있습니다.
Dwayne Hinterlang

답변:


13

일반적으로 Windows에서 반복적으로 사용되는 실행 파일을 찾을 수있는 디렉토리 그룹이 있지만 실제로는 명령을 전역으로 사용하거나 사용하지 않는 특별한 이유가 없습니다. 예전에는 개발자가 원하는 곳에 "전역"으로 포함 시켰습니다. 명령을 "전역"으로 사용하려면 명령을 "Windows 환경 변수" 로 추가해야합니다 . 이렇게하려면 다음과 같은 방법을 사용할 수 있습니다 .

  1. "Windows 시스템 특성"을 사용하여 수동으로 추가 : 여기에 이미지 설명을 입력하십시오

  2. 추가 도구 Setx.exe 사용 :

표준 Windows XP 설치의 일부는 아니지만 setx.exe라는 명령 줄 도구가 Windows XP 서비스 팩 2 지원 도구에 포함되어 있습니다. 이 도구는 환경 변수를 영구적으로 변경할 수 있도록 set 명령을 확장합니다. 예를 들어, C : \ New Folder 폴더를 경로에 추가하려면 명령은 다음과 같습니다.

setx path "%PATH%;C:\New Folder" 
  1. 환경 변수 나열을위한 스크립트 :

"Set"명령은 명령 프롬프트에서 텍스트 파일로의 리디렉션과 함께 사용되어 현재 환경 변수의 목록을 만들 수 있습니다. 명령은

set > C:\env_list.txt 

파일 이름 "C : \ env_list.txt"는 원하는대로 바꿀 수 있습니다.

Microsoft는 이 페이지 에 환경 변수를 나열하는 VBScript도 있습니다 .

  1. 환경 변수의 레지스트리 키 :

레지스트리 편집에 익숙한 사용자에게는 환경 변수를 변경하는 또 다른 방법이 있습니다. 사용자 환경 변수는 레지스트리의 키에 저장됩니다.

HKEY_CURRENT_USER\Environment

시스템 변수는 다음 키에 있습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

확장해야하는 형식의 환경 변수 (예 : % PATH %)는 레지스트리에 REG_EXPAND_SZ 레지스트리 값으로 저장해야합니다. 레지스트리 편집은 주로 시스템 관리자가 사용하는 스크립트 용이며 일반 PC 사용자에게는 권장되지 않습니다.

자세한 내용은 여기를 참조하십시오.


1
그러나 java.exe는에 있습니다 %programfiles%\java\jre7\bin. 이 폴더는 내 시스템의 Path 변수에 나타나지 않습니다.
Pacerier

7
Java.exe는 PATH 변수에 나타나는 % SystemRoot % \ System32 \에도 있습니다.
Dwayne Hinterlang

5

"전역 명령"은 환경 변수에 의해 결정됩니다.

어떤 OS를 사용 하느냐에 따라 설정이 달라집니다.

가장 일반적인 방법은

"내 컴퓨터"를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택하십시오.

Windows7에서는 왼쪽 창에서 "고급 시스템 설정"을 선택해야합니다.

시스템 등록 정보 대화 상자가 열리면 "고급"탭을 선택하십시오.

하단에는 "환경 변수"버튼이 있습니다

환경 변수 대화 상자에서 사용자 또는 전체 시스템에 대한 환경 변수를 구성 할 수 있습니다.

예를 들어, 단순화 된 시스템 변수 "경로"는 다음과 같습니다.

C : \ Program Files \ Java \ jre6 \ bin ; C : \ Ruby19 \ bin;

이러한 경로의 실행 파일은 명령 줄에서 직접 호출 할 수 있습니다.

실행 대화 상자에서 calc, mspaint, cmd를 모두 호출 할 수있는 이유는 C : \ windows \ system32가 경로 환경 변수에 있기 때문입니다.

환경 변수에 사용자 정의 경로를 추가하여 기존 경로를 무시하지 않고 세미콜론을 사용하여 경로를 구분할 수 있습니다. ";"

그런 다음 java -version 명령과 같이 전체 경로를 입력하지 않고 명령 행에서 해당 경로에서 직접 실행 파일을 실행할 수 있습니다.

자세한 내용은 다음 링크를 참조하십시오 ...

환경 변수

환경 변수 이해 및 구성

새로 설치 한 Java.exe 검색


3

다음 which은 현재 PATHEXT 확장에 대한 PATH의 모든 명령 적중을 표시 하는 간단한 것 입니다.

@for %%I in ("%path:;=\" "%") do @for %%E in (%pathext:;= %) do @if exist "%%~dpI%1%%E" @echo %%~dpI%1%%E

그것을 넣으십시오 where.cmd( which당신이 그것을 얻는다면 다른 곳에서 오는 것을 허용 하십시오!) where java.

자, 위의 내 댓글에, 나는 경우 제안 java않습니다 하지 당신에 나타납니다 PATH, 당신은에서 확인할 수있다 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths [참조] 그러나 이후 실제로 시도, 그것은 않는 유일한 것들로 명령 행하지 작업, 사용하는 ShellExecuteEx등, 시작, 실행 그리고 startCLI 명령.


2

명령을 입력하면 쉘은 PATH (OS에 따라 % PATH %, $ PATH)라는 환경 변수를 찾습니다. PATH의 모든 디렉토리를 쿼리하여 입력 한 명령과 일치하는 실행 파일이 있는지 확인합니다. 찾은 첫 번째 것이 실행됩니다.

PATH 변수를 설정하는 다양한 방법 중 일부에 대한 다른 답변을 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.