프로그램을 설치하다 보면 “PATH에 추가하세요” 또는 “Add to PATH”라는 안내를 만나게 된다. 설치 파일을 실행하거나 압축까지 풀었는데, 무엇을 더 설정하라는 것인지 막막할 수 있다.
DrLeeWorks에서 만드는 프로그램처럼 다른 오픈소스 도구를 활용하는 프로그램에서도 이러한 개념을 알아두면 도움이 된다. 영상 처리 도구나 문자 인식 도구가 컴퓨터에 있는데도 “찾을 수 없다”는 메시지가 나타나는 이유를 이해할 수 있기 때문이다.
이 글에서는 Windows를 기준으로 파일 경로와 PATH의 차이, PATH가 필요한 이유, 그리고 기본적인 설정 방법을 설명한다.
1. 경로는 파일이나 폴더의 주소이다
이 글에서는 다른 게시물에서 소개한 오픈소스 소프트웨어인 FFmpeg를 예시로 사용하여 PATH의 개념과 설정 방법을 설명하고자 한다. 따라 해보고자 하는 사람은 설치해도 된다. 영상을 자주 다루는 경우 매우 유용하다. 다만 설치 과정에서 PATH가 자동 등록될 것이다.
컴퓨터에 저장된 모든 파일에는 위치가 있다. 다음은 FFmpeg 설치 후, 실행 파일의 위치를 나타내는 예시이다.
C:\ffmpeg\bin\ffmpeg.exe
각 부분의 의미는 다음과 같다.
| 구성 | 의미 |
|---|---|
C: | C 드라이브 |
ffmpeg\bin | 실행 파일이 들어 있는 폴더들의 순서 |
ffmpeg.exe | 실행할 파일의 이름 |
이처럼 파일이나 폴더가 어디에 있는지 나타내는 주소를 경로(path) 라고 한다. 탐색기에서 폴더를 차례로 열어 파일을 찾는 과정을 하나의 문자열로 표현한 것이라고 생각하면 쉽다.
사실 누구나 아는 내용이고 당연하게 사용해왔을테지만, 막상 프로그램 설치 과정에서 PATH 관련 요청이 오면 그때는 생소하게 느껴질수도 있다.
2. PATH는 프로그램을 찾아볼 폴더 목록이다
일반적인 경로와 PATH 환경 변수는 구분할 필요가 있다.
- 경로: 특정 파일이나 폴더의 위치이다.
- PATH: 실행할 프로그램을 이름으로 찾을 때 확인하는 폴더 목록이다.
환경 변수는 운영체제와 프로그램이 참고하는 이름 붙은 설정값이다. PATH는 그중 실행 파일을 찾는 데 사용하는 설정이다. 즉 환경 변수 안에 PATH가 있다. Windows 설정 화면에서는 Path로 표시되기도 한다.
주소록에 비유하면, 파일 경로는 정확한 주소, PATH는 이름만 알고 있을 때 찾아볼 장소들의 목록에 가깝다.
예를 들어 PATH에 다음 폴더가 등록되어 있다고 가정해 보자. ffmpeg.exe 파일이 존재하는 위치이다.
C:\ffmpeg\bin
그러면 터미널 실행후 어느 경로에서든 ffmpeg를 입력했을 때 해당 폴더의 실행 파일을 찾을 수 있다. 명령을 입력할 때마다 긴 주소를 적을 필요가 줄어드는 것이다. Microsoft의 PATH 설명에서도 PATH를 실행 파일 검색에 사용하는 디렉터리 목록으로 정의한다.
PATH에 등록하는 대상은 일반적으로 실행 파일 자체가 아니라 실행 파일이 들어 있는 폴더이다.
3. 설치했는데도 “찾을 수 없다”고 하는 이유
파일을 컴퓨터에 저장하는 것과, 다른 프로그램이 그 파일의 위치를 아는 것은 별개의 문제이다.
FFmpeg의 압축을 풀어 다음 위치에 실행 파일을 두었다고 가정하자.
C:\ffmpeg\bin\ffmpeg.exe
사용자는 탐색기에서 파일을 볼 수 있다. 하지만 다른 프로그램이 단순히 ffmpeg라는 이름으로 실행을 요청한다면, 그 위치를 찾을 방법이 필요하다.
컴퓨터가 명령을 실행할 때마다 모든 드라이브와 폴더를 샅샅이 뒤지는 것은 아니다. 사용하는 실행 방식에 따라 정해진 위치와 PATH 등을 참고한다. 따라서 파일이 실제로 존재해도 검색 대상에 포함되지 않으면 찾지 못할 수 있다.
이때 사용할 수 있는 방법은 크게 세 가지이다.
| 방법 | 설명 |
|---|---|
| 전체 경로 지정 | 실행 파일의 정확한 주소를 알려준다. |
| PATH 등록 | 실행 파일이 있는 폴더를 검색 목록에 추가한다. |
| 프로그램에 함께 포함 | 개발자가 도구를 배포 파일에 넣고, 프로그램이 그 위치를 찾아 사용하도록 만든다. |
어떤 방법을 사용하는지는 프로그램의 구성에 따라 달라진다.
4. FFmpeg 예제로 이해하기
터미널은 명령을 글자로 입력하여 프로그램을 실행하는 창이다. 아래 예시는 Windows의 PowerShell을 기준으로 한다. 예시 경로는 실제 설치 위치로 바꾸어야 한다.
전체 경로를 지정하는 경우
PATH에 등록하지 않아도 다음과 같이 실행 파일의 위치를 직접 지정할 수 있다.
& "C:\ffmpeg\bin\ffmpeg.exe" -version
여기서 &는 뒤에 적힌 경로의 프로그램을 실행하라는 PowerShell 문법이다. -version은 FFmpeg의 버전 정보를 확인하는 옵션이다.
PATH에 등록한 경우
C:\ffmpeg\bin이 PATH에 등록되어 있고 새 PowerShell 창에 반영되었다면 다음처럼 간단하게 입력할 수 있다.
ffmpeg -version
두 명령은 같은 실행 파일을 가리킬 수 있다. 차이는 위치를 직접 알려주는가, 등록된 위치에서 이름으로 찾게 하는가이다.
참고로 PowerShell에서 현재 폴더에 있는 실행 파일을 직접 실행하려면 다음처럼 .과 역슬래시를 붙인다.
.\ffmpeg.exe -version
이는 “현재 폴더에 있는 파일을 실행하라”는 뜻이며, PATH에 등록하는 동작은 아니다. 관련 동작은 Microsoft의 PowerShell 명령 검색 규칙에 설명되어 있다.
PATH에 경로가 등록되어있지 않다면, 반드시 위 그림과 같이 실행 파일이 있는 폴더에 가서 실행해야 하며, 다른 폴더에서 실행하고자 할 경우 “C:\ffmpeg\bin\ffmpeg.exe” 와 같이 실행 파일이 있는 경로를 같이 입력해줘야 한다.
5. Windows에서 PATH에 추가하는 방법
FFmpeg를 예로 들면 다음 순서로 진행할 수 있다. Windows 버전과 표시 언어에 따라 메뉴 이름은 조금 다를 수 있다.
- 탐색기에서
ffmpeg.exe가 실제로 들어 있는 폴더를 확인한다. - 해당 폴더의 경로를 복사한다. 예를 들어
C:\ffmpeg\bin이다. - 시작 메뉴에서 환경 변수를 검색하고 시스템 환경 변수 편집을 연다.
- 환경 변수 버튼을 누른다.
- 위쪽 사용자 변수(또는 아래쪽 시스템 변수)에서
Path를 선택하고 편집을 누른다. - 새로 만들기를 눌러 복사한 폴더 경로를 추가한다.
Path항목이 없다면 사용자 변수에 새로 만든다. - 각 창의 확인을 눌러 저장한다.
- 사용 중인 터미널과 관련 프로그램을 종료한 뒤 다시 실행한다.
기존에 등록된 경로를 지우거나 전체 값을 새 경로 하나로 덮어쓰지 말고, 항목을 추가해야 한다. 다른 프로그램도 기존 항목을 사용하고 있을 수 있다.
사용자 변수는 현재 사용자 계정을 위한 설정이고, 시스템 변수는 컴퓨터의 여러 사용자에게 적용되는 설정이다. 본인 계정에서 사용할 도구라면 보통 사용자 Path에 추가하면 된다.
VS Code 안의 터미널처럼 다른 프로그램에서 연 터미널은 해당 프로그램도 완전히 종료한 뒤 다시 실행해야 변경 사항을 전달받을 수 있다.
작업 표시줄 하단에 “환경 변수”로 검색 후 위 순서대로 진행하면 된다.
6. 제대로 등록되었는지 확인하기
새 PowerShell 창을 열고 다음 명령을 입력한다.
ffmpeg -version
버전 정보가 표시되면 해당 창에서 FFmpeg를 이름으로 실행할 수 있는 상태이다.
실제로 어떤 실행 파일이 선택되는지 확인하려면 다음 명령을 사용할 수 있다.
Get-Command ffmpeg.exe | Select-Object -ExpandProperty Source
예를 들어 다음과 같이 표시된다.
C:\ffmpeg\bin\ffmpeg.exe
여러 버전이 설치된 경우에는 다음과 같이 확인한다.
Get-Command ffmpeg.exe -All
같은 이름의 실행 파일이 여러 곳에 있으면 검색 순서에 따라 예상과 다른 버전이 선택될 수 있다. 다만 앱이 별도 설정이나 내장된 파일을 사용한다면, 터미널에서 선택되는 파일과 앱이 사용하는 파일은 다를 수 있다.
7. 오픈소스 프로그램은 모두 PATH 설정이 필요한가?
그렇지는 않다. PATH는 오픈소스 전용 기능이 아니다. 오픈소스인지 상용 프로그램인지보다, 외부 도구를 어떤 방식으로 실행하는지가 중요하다.
다른 도구를 활용하는 프로그램은 실행 파일을 함께 제공하기도 하고, 사용자가 설치한 파일을 찾아 사용하기도 한다. 라이브러리를 프로그램 내부에서 직접 불러오는 경우에는 실행 파일을 PATH로 찾는 방식과 다르게 동작한다.
사용자 입장에서는 다음과 같이 판단하면 된다.
| 프로그램의 안내 또는 상태 | 필요한 대응 |
|---|---|
| 필요한 도구가 포함되어 정상 작동한다. | 별도 PATH 설정이 필요하지 않을 수 있다. |
| 설정에 실행 파일 선택 버튼이 있다. | 안내에 따라 해당 파일을 직접 지정한다. |
| 외부 도구 설치와 PATH 등록을 요구한다. | 설치 후 실행 파일이 있는 폴더를 PATH에 추가한다. |
특히 프로그램 설정의 FFmpeg 경로와 Windows의 PATH 환경 변수는 같은 설정이 아니다. 프로그램 안에서 경로를 지정하는 것은 일반적으로 그 프로그램에만 위치를 알려주는 것이다.
설정창이 실행 파일을 요구하면 ffmpeg.exe를 선택하고, 폴더를 요구하면 해당 폴더를 선택해야 한다.
8. 자주 생기는 문제
| 증상 | 확인할 내용 |
|---|---|
| 설치했는데 명령을 찾지 못한다. | 실행 파일이 있는 폴더가 PATH에 등록되어 있는지 확인한다. |
| PATH에 추가해도 달라지지 않는다. | 터미널과 이를 실행한 프로그램을 완전히 종료한 뒤 다시 연다. |
ffmpeg 폴더를 등록했는데 작동하지 않는다. | 실행 파일이 하위 bin 폴더에 있는지 확인한다. |
| 폴더를 옮긴 뒤 작동하지 않는다. | PATH에 저장된 이전 위치를 새 위치로 수정한다. |
| 예전 버전이 실행된다. | 같은 이름의 실행 파일이 여러 경로에 있는지 확인한다. |
| 터미널에서는 되는데 앱에서는 안 된다. | 앱을 재실행하고, 앱 자체의 실행 파일 경로 설정도 확인한다. |
PATH 등록은 프로그램을 설치하거나 다운로드하는 기능이 아니다. 이미 존재하는 실행 파일을 찾을 수 있도록 그 폴더의 위치를 알려주는 설정이다.
“파일은 있는데 프로그램이 찾지 못한다”는 상황을 만나면, 파일의 존재 여부와 그 위치를 찾는 방법을 나누어 확인해 보면 된다.