PATH (변수)

개요
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)
    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
    

동작 원리

  1. 사용자가 쉘에 명령어를 입력한다 (ls, gcc 등).
  2. 쉘은 먼저 내장 명령(builtin)인지 확인한다.
  3. 내장이 아니면 PATH 변수에 지정된 디렉터리를 순차적으로 탐색한다.
  4. 해당 디렉터리 안에 실행 파일이 존재하면 그 파일을 실행한다.
  5. 어느 디렉터리에서도 찾지 못하면 “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 편집.

보안 고려 사항

  • 상대 경로 및 현재 디렉터리: .(현재 디렉터리)를 PATH에 포함시키면 악성 실행 파일이 우연히 실행될 위험이 있다. 많은 시스템에서는 기본적으로 .을 제외한다.
  • 우선 순위: 악의적인 사용자는 자신의 디렉터리를 PATH 앞에 삽입해 정식 프로그램을 가로채는 PATH hijacking 공격을 수행할 수 있다.
  • 읽기/쓰기 권한: PATH에 포함된 디렉터리는 최소한 읽기 전용 권한을 부여하고, 쓰기 권한은 엄격히 제한한다.

관련 환경 변수

  • LD_LIBRARY_PATH (동적 라이브러리 검색 경로)
  • MANPATH (매뉴얼 페이지 검색 경로)
  • PYTHONPATH (Python 모듈 검색 경로)
  • INCLUDE, LIB (컴파일러용 헤더·라이브러리 경로)

주요 활용 사례

  1. 개발 환경: 컴파일러(gcc, clang), 빌드 도구(make, cmake) 등을 PATH에 추가해 터미널 어디서든 호출 가능하게 함.
  2. 스크립트 자동화: 배시 스크립트나 파워셸 스크립트에서 외부 도구를 호출할 때 PATH를 활용해 경로를 하드코딩하지 않음.
  3. 멀티버전 관리: pyenv, nvm, rbenv 등 버전 관리 도구는 각각의 실행 파일 디렉터리를 PATH 앞쪽에 삽입해 현재 활성 버전을 지정한다.

표준 및 규격

  • POSIX.1‑2001 표준은 PATH 변수를 "colon-separated list of absolute pathnames" 로 정의하고, 쉘이 이를 어떻게 해석해야 하는지 규정한다.
  • Windows API는 GetEnvironmentVariable, SetEnvironmentVariable 함수를 통해 PATH를 읽고 쓸 수 있다.

요약
PATH 변수는 운영 체제와 쉘이 명령을 실행 파일과 연결하는 핵심 메커니즘이며, 시스템 관리·보안·개발 생산성에 있어 매우 중요한 역할을 한다. 올바른 설정과 관리가 원활한 작업 흐름과 보안 위험 최소화에 기여한다.

둘러보기

더 찾아볼 만한 주제