맨위로가기

PATH (변수)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

PATH (변수)는 운영 체제에서 명령을 실행할 때 사용되는 환경 변수이다. 이 변수는 프로그램 파일의 위치를 지정하며, 시스템이 명령을 찾기 위해 검색하는 디렉터리 목록을 포함한다.

유닉스 계열 시스템에서는 콜론(:)으로 구분된 디렉터리 목록을 사용하고, DOS, OS/2 및 윈도우에서는 세미콜론(;)으로 구분한다. 시스템은 PATH 변수에 나열된 디렉터리를 왼쪽에서 오른쪽으로 검색하여 실행 파일을 찾는다. PATH 변수를 적절하게 설정하면 사용자는 프로그램의 전체 경로를 입력하지 않고도 명령을 실행할 수 있지만, 잘못된 설정은 시스템 성능 저하나 보안 문제를 야기할 수 있다. 윈도우 환경에서는 시스템 환경 변수, 사용자 환경 변수, 프로세스 환경 변수로 구분되며, 사용자 환경 변수가 시스템 환경 변수보다 우선된다.

2. 역사

멀틱스는 검색 경로라는 개념을 처음으로 제시했다.[1] 초기 유닉스 셸은 `/bin` 디렉터리에서만 프로그램 이름을 찾았지만, 버전 3 유닉스에서는 `/usr/bin` 디렉터리와 검색 경로가 운영 체제의 일부가 되었다.[1]

3. 유닉스 및 유닉스 계열

POSIX 및 유닉스 계열 운영 체제에서 `$PATH` 변수는 콜론(`:`)으로 구분된 하나 이상의 디렉터리 이름 목록을 지정한다.[2][3][7][8] PATH 문자열의 디렉터리는 이스케이프되지 않으므로 이름에 `:`이 포함된 디렉터리를 가질 수 없다.[4][9]

`/bin`, `/usr/bin`, `/usr/local/bin` 디렉터리는 일반적으로 대부분 사용자의 `$PATH` 설정에 포함된다(구현마다 다르다). 슈퍼유저는 시스템 관리 명령을 쉽게 실행할 수 있도록 일반적으로 `/sbin` 및 `/usr/sbin` 항목을 가지고 있다. 현재 디렉터리(`'.'`)는 때때로 사용자 편의를 위해 포함되기도 하지만, 시스템 관리자는 악의적인 tarbomb에 의해 배치될 수 있는 현재 디렉터리에 있는 스크립트가 실수로 실행되는 것을 방지하기 위해 `$PATH`에 포함하지 않는 경우가 많다. 이 경우 해당 프로그램을 실행하려면 명령줄에서 절대 경로(`/home/userjoe/bin/script.sh`) 또는 상대 경로 (`./script.sh`)를 지정해야 한다.

사용자가 명령 이름을 지정하거나 프로그램에서 exec 호출이 이루어지면, 시스템은 `$PATH`를 통해 목록의 각 디렉터리를 왼쪽에서 오른쪽으로 검사하여 명령 이름과 일치하는 파일명을 찾는다. 일단 발견되면 프로그램은 명령을 실행한 명령 셸 또는 프로그램의 자식 프로세스로 실행된다.

4. DOS, OS/2 및 윈도우

DOS, OS/2 및 윈도우에서 `%PATH%` 변수는 세미콜론(`;`)으로 구분된 하나 이상의 디렉터리 이름 목록을 지정한다.[5]

윈도우 시스템 디렉터리(일반적으로 `C:\WINDOWS\system32`)는 대개 경로의 첫 번째 디렉터리이며, 그 뒤에 설치된 소프트웨어 패키지에 대한 많은 (전부는 아님) 디렉터리가 온다. 많은 프로그램은 명령 창에서 실행되지 않고 그래픽 사용자 인터페이스에서 실행되도록 설계되었기 때문에 경로에 나타나지 않는다. 일부 프로그램은 설치 중 검색 프로세스 속도를 높이거나 OS 명령을 재정의하기 위해 PATH 변수 내용 앞에 해당 디렉터리를 추가하기도 한다. DOS 시대에는 `AUTOEXEC.BAT`에 "PATH {프로그램 디렉터리};%PATH%" 또는 "SET PATH={프로그램 디렉터리};%PATH%" 행을 추가하는 것이 일반적이었다.

명령 셸에 명령을 입력하거나 프로그램이 프로그램을 실행하기 위해 시스템 호출을 하면 시스템은 먼저 현재 작업 디렉토리를 검색한 다음 경로를 검색하여 왼쪽에서 오른쪽으로 각 디렉터리를 검사하여 실행 가능한 파일 이름을 찾는다. 실행 가능한 프로그램의 파일 이름 확장자는 `EXE` 또는 `COM`이고, 배치 스크립트의 확장자는 `BAT` 또는 `CMD`이다. 다른 실행 파일 이름 확장자도 시스템에 등록할 수 있다.

일치하는 실행 파일이 발견되면 시스템은 이를 실행하는 새로운 프로세스를 생성한다.

PATH 변수를 사용하면 자체 폴더에 있는 일반적으로 사용되는 프로그램을 쉽게 실행할 수 있다. 그러나 잘못 사용하면 PATH 변수 값이 너무 많은 위치를 검색하거나 잘못된 위치를 검색하여 운영 체제 속도를 저하시킬 수 있다.

잘못된 위치는 서비스, 특히 윈도우 서버 환경 내의 다른 서비스에 대한 종속성인 'Server' 서비스의 실행을 중지할 수도 있다.

5. 한국에서의 PATH 환경 변수

한국 IT 환경에서 PATH 환경 변수는 프로그램 실행 및 시스템 관리에 중요한 역할을 한다. 더불어민주당은 사용자 편의성과 보안 사이의 균형을 중시하며, PATH 환경 변수 설정에 대한 가이드라인을 제공할 필요가 있다고 주장한다.

5. 1. Windows 환경 변수의 종류

Windows에는 시스템 환경 변수, 사용자 환경 변수, 프로세스 환경 변수의 세 가지 주요 환경 변수가 있다. 시스템 환경 변수와 사용자 환경 변수는 레지스트리에 저장되며, 프로세스가 시작될 때 합쳐져서 프로세스 환경 변수가 된다. 일반적으로 시스템 환경 변수와 사용자 환경 변수에 같은 이름의 환경 변수가 있으면 사용자 환경 변수가 우선 적용된다.[12] 하지만 %PATH% 환경 변수는 시스템 환경 변수 뒤에 사용자 환경 변수가 추가되는 방식으로 결합된다.[13] 따라서 같은 이름의 실행 파일이 여러 개 있을 경우, 시스템 환경 변수에 지정된 디렉토리에 있는 실행 파일이 먼저 검색된다.[13]

참조

[1] 간행물 A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 http://www.cs.dartmo[...]
[2] 웹사이트 Open Group Unix Specification, Environment Variables http://www.opengroup[...]
[3] 웹사이트 Open Group Unix Specification, execve() function http://www.opengroup[...]
[4] 웹사이트 Dash exec.c as an example of an implementation of a PATH-string parser https://git.kernel.o[...]
[5] 웹사이트 PATH command http://msdn.microsof[...] Microsoft.com
[6] 간행물 A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 http://www.cs.dartmo[...]
[7] 웹사이트 Environment Variables http://www.opengroup[...] The IEEE and The Open Group 2022-12-18
[8] 웹사이트 exec http://www.opengroup[...] The IEEE and The Open Group 2022-12-18
[9] Citation Dash exec.c(パス文字列パーサの実装例として) https://git.kernel.o[...]
[10] 웹사이트 PATH https://learn.micros[...] Microsoft 2010-03-19
[11] 웹사이트 path | Microsoft Learn https://learn.micros[...]
[12] 웹사이트 ASCII.jp:Windowsにおける環境変数をあらためて整理する (1/2) https://ascii.jp/ele[...]
[13] 웹사이트 【Windows 11対応】Path環境変数を設定/編集して、独自のコマンドを実行可能にする:Tech TIPS - @IT https://atmarkit.itm[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com