셸 PATH

실행파일을 조회하는 경로

full path 없이 응용프로그램을 실행하게 한다

현재 작업 디렉터리 확인하기

pwd : print working directory

ubuntu:~$ pwd
/home/gdhong

PATH 변수 내용 확인하기

PATH변수는 콜론(:)으로 구분된다. 콜론으로 여러 디렉터리를 PATH에 추가할 수 있다.

ubuntu:~$ echo $PATH
/home/gdhong/bin:/home/gdhong/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

ubuntu:~$ export | grep PATH
declare -x PATH="/home/gdhong/bin:/home/gdhong/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

PATH 변수의 역할

/bin 안에는 ls 프로그램이 들어있다. 4번째 줄을 통해 PATH 변수에서 '/bin'을 제외하였다. 6~7번 줄에서는 ls 라는 프로그램을 찾지 못한다는 에러가 발생한다.

PATH 변수 내용 확인하기
ubuntu:~$ which ls
/bin/ls

ubuntu:~$ export PATH="/home/gdhong/bin:/home/gdhong/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin"

ubuntu:~$ ls
ls: command not found

ubuntu:~$ which ls
# 아무것도 표시되지 않음

LD_LIBRARY_PATH

리눅스에서 PATH 이외에 중요한 경로 변수로는 LD_LIBRARY_PATH 가 있다.

리눅스 응용프로그램의 대부분은 .so 라이브러리 파일을 동적으로 링킹하여 동작한다. (윈도우의 경우는 .DLL 파일을 참조한다). LD_LIBRARY_PATH 는 응용프로그램이 so 동적 라이브러리를 조회하는 경로이다. 시스템에 라이브러리가 설치되어 있어도, 이 변수에 등록되어있지 않다면 라이브러리를 찾을 수 없다는 에러가 발생한다.

(참고) ld.so - 리눅스 메뉴얼