개요
PATH는 컴퓨터 운영 체제에서 실행 파일을 검색할 때 참조하는 디렉터리 목록을 지정하는 환경 변수이다. 유닉스·리눅스 계열, Windows, macOS 등 대부분의 현대 운영 체제에서 사용되며, 쉘이나 명령 인터프리터가 사용자가 입력한 명령을 찾을 수 있도록 돕는다.
역사
- 1970년대 초: 최초의 멀티유저 운영 체제인 Unix에서
PATH변수 개념이 도입되었다. 초기 Unix 시스템에서는/bin,/usr/bin등 기본 실행 파일 디렉터리를 지정하는 것이 관례였다. - 1980·1990년대: BSD, System V, GNU/Linux 등 Unix 파생계열이 확산되면서
PATH변수의 형식과 관리 방법이 표준화되었다. - 1990년대 중반: 마이크로소프트는 Windows 95부터 환경 변수 체계를 차용해
PATH변수를 도입했다. Windows에서는 세미콜론(;)을 구분자로 사용한다.
구조와 구문
- 구분자
- Unix·Linux·macOS: 콜론(
:) - Windows: 세미콜론(
;)
- Unix·Linux·macOS: 콜론(
- 예시 (Unix)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - 예시 (Windows)
PATH=C:\Windows\System32;C:\Windows;C:\Program Files\Git\bin
동작 원리
- 사용자가 쉘에 명령어를 입력한다 (
ls,gcc등). - 쉘은 먼저 내장 명령(builtin)인지 확인한다.
- 내장이 아니면
PATH변수에 지정된 디렉터리를 순차적으로 탐색한다. - 해당 디렉터리 안에 실행 파일이 존재하면 그 파일을 실행한다.
- 어느 디렉터리에서도 찾지 못하면 “command not found” 오류를 반환한다.
설정 및 수정 방법
- 일시적 설정 (현재 쉘 세션에만 적용)
export PATH=$PATH:/opt/myapp/bin # Bash/Zsh 등 set PATH=%PATH%;C:\myapp\bin # Windows CMD $env:PATH += ";C:\myapp\bin" # PowerShell - 영구적 설정
- Unix·Linux:
~/.bashrc,~/.zshrc,/etc/profile,/etc/environment등에 추가. - macOS:
/etc/paths파일이나~/.zshrc에 편집. - Windows: 시스템 속성 → 고급 → 환경 변수 → 사용자/시스템 PATH 편집.
- Unix·Linux:
보안 고려 사항
- 상대 경로 및 현재 디렉터리:
.(현재 디렉터리)를PATH에 포함시키면 악성 실행 파일이 우연히 실행될 위험이 있다. 많은 시스템에서는 기본적으로.을 제외한다. - 우선 순위: 악의적인 사용자는 자신의 디렉터리를
PATH앞에 삽입해 정식 프로그램을 가로채는 PATH hijacking 공격을 수행할 수 있다. - 읽기/쓰기 권한:
PATH에 포함된 디렉터리는 최소한 읽기 전용 권한을 부여하고, 쓰기 권한은 엄격히 제한한다.
관련 환경 변수
LD_LIBRARY_PATH(동적 라이브러리 검색 경로)MANPATH(매뉴얼 페이지 검색 경로)PYTHONPATH(Python 모듈 검색 경로)INCLUDE,LIB(컴파일러용 헤더·라이브러리 경로)
주요 활용 사례
- 개발 환경: 컴파일러(gcc, clang), 빌드 도구(make, cmake) 등을
PATH에 추가해 터미널 어디서든 호출 가능하게 함. - 스크립트 자동화: 배시 스크립트나 파워셸 스크립트에서 외부 도구를 호출할 때
PATH를 활용해 경로를 하드코딩하지 않음. - 멀티버전 관리:
pyenv,nvm,rbenv등 버전 관리 도구는 각각의 실행 파일 디렉터리를PATH앞쪽에 삽입해 현재 활성 버전을 지정한다.
표준 및 규격
- POSIX.1‑2001 표준은
PATH변수를 "colon-separated list of absolute pathnames" 로 정의하고, 쉘이 이를 어떻게 해석해야 하는지 규정한다. - Windows API는
GetEnvironmentVariable,SetEnvironmentVariable함수를 통해PATH를 읽고 쓸 수 있다.
요약
PATH 변수는 운영 체제와 쉘이 명령을 실행 파일과 연결하는 핵심 메커니즘이며, 시스템 관리·보안·개발 생산성에 있어 매우 중요한 역할을 한다. 올바른 설정과 관리가 원활한 작업 흐름과 보안 위험 최소화에 기여한다.