셸은 /bin에 위치한 ls 실행 파일을 어떻게 찾아낼까? 셸 내부에서는 미리 메모리에 저장된 디렉터리의 목록을 뒤져 실행 파일을 찾는다. 이 목록을 검색 경로(search path)라고 한다. 검색 경로의 내용은 셸 변수 PATH의 내용을 확인하면 알 수 있다.
$ echo $PATH
/home/smith/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/java/bin
검색 경로는 각 디렉터리의 이름을 콜론(:)으로 구분한다. 알아보기 쉽도록 문자 치환 기능을 가진 tr 명령(이 명령은 5장에서 자세히 설명한다)을 사용해 콜론을 개행 문자로 치환해보자.
$ echo $PATH | tr : "\n"
/home/smith/bin
/usr/local/bin
/usr/bin
/bin
/usr/games
/usr/lib/java/bin
셸은 검색 경로에 포함된 디렉터리를 차례로 순회하며 ls와 같은 실행 파일을 찾는다. “/home/smith/bin에는 ls가 있나요? 아니요. /usr/local/bin에는 ls가 있나요? 아니요. /usr/bin에는 있나요? 여기도 없네요. /bin/ls는 있나요? 네! 여기에 있네요. /bin/ls를 실행합니다.”와 같은 식이다. 다만 인간이 체감하기에는 이 과정이 너무 빠를 뿐이다.4