본문 바로가기
Computer Science/리눅스

Linux PATH 지정하기

by Bloofer 2020. 9. 4.

PATH의 정의

PATH는 리눅스와 다른 유닉스 계열 운영체제의 환경 변수로, 사용자가 발행 한 명령에 응답하여 실행 파일 (즉, 즉시 실행할 수있는 프로그램)을 검색 할 디렉토리를 쉘에게 알려준다. PATH는 이러한 운영 체제의 가장 중요한 단일 환경 변수로 간주되어진다.

출처 : linfo.org

 

PATH 등록 및 확인

리눅스 시스템의 환경변수인 PATH는 배쉬에서 echo $PATH로 확인할 수 있는데, 나의 PATH 목록은 다음과 같다.

:를 기준으로 여러개 디렉토리들의 절대경로들이 등록되어 있는데, 이중에서 usr/bin/의 경우는 시스템에서 자동으로 등록한 디렉토리이다. usr/bin/은 셸에서 사용하는 실행가능한 바이너리들이 들어있는 디렉토리인데, 아래와 같이 배쉬에서 부를 수 있는 여러 셸 프로그램들이 있다.

 

위와 같이 초록색으로 표시되어 있는 파일들이 해당 디렉토리내 실행가능한 바이너리 파일들인데, 환경변수 PATH에 해당 경로를 등록해 놓으면, 해당 바이너리를 경로를 찾아서 부르는 대신($:/usr/bin/mmv) 바로 배쉬에서 mmv로 불러도 시스템이 알아서 해당 바이너리를 찾을 수 있다.

 

이러한 환경변수 PATH는 사용자가 직접 추가로 등록할 수도 있는데,

export PATH=$PATH:/your/path/...

위와 같이 환경변수 PATH에 등록할 바이너리가 있는 경로를 넣어주면 된다. 또한 배쉬 셸을 킬 때마다 환경변수 PATH를 추가하도록 .bashrc에 등록할수도 있다. 나의 경우 Deckard와 Merlin의 경로가 추가되어 있다.

첨언) 이러한 사용자 바이너리 디렉토리에 있는 바이너리의 이름 충돌문제가 날 때가 종종 있는데, 그 대표적인 예가 python이다. 일반적으로 리눅스 사용자 바이너리 디렉토리에는 python, python2, python3가 모두 존재하는데, 리눅스 버전에 따라 python 바이너리의 버전이 파이썬2를 나타낼때도, 파이썬3을 나타낼 때도 있다. 이에 따라, 파이썬2를 의도한 스크립트에서 3으로 바인딩되어 있거나 파이썬3을 의도한 스크립트에서 2로 바인딩된 경우 실행시 충돌이 발생할 수 있다. 그냥 안전하게 해당 파이썬 버전을 명시하여 스크립트를 작성하는 편이 좋다.(이런 이슈가 발생한다.)