원문 보기: https://dawoum.duckdns.org/wiki/PATH_(variable)
PATH는 유닉스-계열 운영 시스템, DOS, OS/2, 및 Microsoft Windows의 환경 변수로, 실행 가능한 프로그램이 있는 디렉토리 집합을 지정합니다. 일반적으로, 각 실행 프로세스 또는 사용자 세션에는 고유한 PATH 설정이 있습니다.
History
Multics는 검색 경로라는 아이디어를 처음 만들었습니다. 초기 유닉스 쉘은 /bin에서만 프로그램 이름을 찾았지만, 버전 3 Unix에 의해, 디렉토리가 너무 커서 /usr/bin과 검색 경로가 운영 시스템의 일부가 되었습니다.
Unix and Unix-like
POSIX 및 유닉스-계열 운영 시스템에서, $PATH 변수는 콜론 (:) 문자에 의해 구분된 하나 이상의 디렉토리 이름 목록으로 지정됩니다. PATH-문자열에서 디렉토리는 이스케이프되지 않도록 되어 있으며, 그것들 이름에 :를 갖는 디렉토리를 가질 수 없습니다.
/bin, /usr/bin, 및 /usr/local/bin 디렉토리는 전형적으로 대부분 사용자의 $PATH 설정에 포함됩니다 (비록 이것이 구현에 따라 변할지라도). 수퍼유저는 역시 전형적으로 시스템 관리 명령을 쉽게 실행하기 위해 /sbin 및 /usr/sbin 항목도 가지고 있습니다. 현재 디렉토리 (.)는 때때로 사용자에 의해 포함하기도 하며, 현재 작업 디렉토리에 있는 프로그램을 직접 실행하도록 허용합니다. 시스템 관리자는 일반적으로 악의적인 tarbomb에 의해 그곳에 배치될 수 있는 것과 같은 현재 디렉토리에서 있는 스크립트의 우발적 실행을 방지하기 위해 $PATH에 포함하지 않습니다. 해당 경우에서, 그러한 프로그램은 명령줄에 절대 경로 (/home/userjoe/bin/script.sh) 또는 상대 경로 (./script.sh)를 지정하도록 요구합니다.
명령 이름은 사용자에 의해 지정되거나 exec 호출이 프로그램에서 이루어질 때, 시스템은 $PATH를 검색하여, 목록에서 각 디렉토리를 왼쪽에서 오른쪽으로 검사하여, 명령 이름과 일치하는 파일-이름을 찾습니다. 일단 발견되면, 프로그램은 명령을 내린 명령 쉘 또는 프로그램의 자식 프로세스로 실행됩니다.
DOS, OS/2, and Windows
DOS, OS/2, 및 Windows 운영 시스템에서, %PATH% 변수는 세미콜론 (;) 문자에 의해 구분된 하나 이상의 디렉토리 이름 목록으로 지정됩니다.
Windows 시스템 디렉토리 (전형적으로 C:\WINDOWS\system32)는 전형적으로 경로에서 첫 번째 디렉토리이며, 그 뒤에 설치된 소프트웨어 패키지에 대해 많은 디렉토리 (전부는 아님)가 옵니다. 많은 프로그램은 명령 윈도우에서 실행되도록 설계되지 않았지만, 그래픽 사용자 인터페이스에서 실행되도록 설계되었기 때문에, 경로에 나타나지 않습니다. 일부 프로그램은 검색 프로세스를 빠르게 하고/하거나 OS 명령을 덮어쓰기 위해 설치 중에 PATH 변수의 컨텐츠 앞에 디렉토리를 추가할 수 있습니다. DOS 시대에서, 그것은 AUTOEXEC.BAT에 PATH {program directory};%PATH% 또는 SET PATH={program directory};%PATH% 줄을 추가하는 것이 관례적이었습니다.
명령이 명령 셸에서 입력되거나 시스템 호출이 프로그램에 의해 프로그램을 실행하기 위해 만들어질 때, 시스템은 먼저 현재 작업 디렉토리를 검색하고 그런-다음 경로를 검색하여, 각 디렉토리를 왼쪽에서 오른쪽으로 검사하여 주어진 명령 이름과 일치하는 실행 파일 이름을 찾습니다. 실행 프로그램은 EXE 또는 COM의 파일-이름 확장자를 가지고 있고, 배치 스크립트는 BAT 또는 CMD의 확장자를 가지고 있습니다. 다른 실행 파일 이름 확장자도 시스템에 등록될 수 있습니다.
일단 일치하는 실행 파일이 발견되면, 시스템은 해당 파일을 실행하는 새로운 프로세스를 생성합니다.
PATH 변수는 자체 폴더에 있는 자주 사용되는 프로그램을 쉽게 실행할 수 있도록 만듭니다. 어쨌뜬, 현명하지 않게 사용하면, PATH 변수의 값이 너무 많은 위치나 잘못된 위치를 검색하여 운영 시스템을 느리게 할 수 있습니다.
잘못된 위치는 서비스 실행을 완전히 중단시킬 수도 있으며, 특히 '서버' 서비스는 보통 Windows Server 환경 내의 다른 서비스에 대한 종속성입니다.
References
- McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.
- Open Group Unix Specification, Environment Variables
- Open Group Unix Specification, execve() function
- Dash exec.c as an example of an implementation of a PATH-string parser
- Microsoft.com, PATH command