실행할 프로그램을 찾는 메커니즘
리눅스에서 실행할 프로그램을 찾는 메커니즘은 주로 PATH
환경 변수와 파일 시스템 권한을 기반으로 합니다. 이 프로세스는 다음과 같은 단계로 이루어집니다.
1. 커맨드 이름 해석
사용자가 쉘에 프로그램 이름을 입력하면, 쉘은 먼저 내장 명령어(built-in commands) 중 하나인지 확인합니다. 이것은 쉘 자체에 내장된 명령어로, 별도의 실행 파일을 필요로 하지 않습니다. 예를 들어 cd
, echo
, history
등이 있습니다.
2. PATH
환경 변수 사용
내장 명령어가 아닐 경우, 쉘은 PATH
환경 변수를 확인합니다. PATH
는 콜론(:
)으로 구분된 디렉터리 목록을 포함하며, 쉘은 이 목록을 사용하여 실행 파일을 찾습니다.
예를 들어 PATH
가 다음과 같다고 가정해 봅시다.
/usr/local/bin:/usr/bin:/bin
사용자가 myapp
을 실행하려 할 때, 쉘은 /usr/local/bin/myapp
, /usr/bin/myapp
, 그리고 /bin/myapp
순서로 파일 시스템을 검색하여 실행 가능한 myapp
파일을 찾습니다.
3. 실행 권한 검사
파일이 발견되면, 쉘은 실행 권한을 확인합니다. 사용자 또는 사용자 그룹이 해당 파일에 대한 실행 권한이 있는지 확인하고, 그렇지 않을 경우 실행을 거부합니다.
4. 절대 경로 또는 상대 경로
사용자가 프로그램을 절대 경로(예: /usr/local/bin/myapp
)나 상대 경로(예: ./myapp
)로 지정하면, PATH
는 무시되고 지정된 경로에서 프로그램을 찾습니다. 명령어의 경로를 정확하게 안다면 어떤 경우에도 실행이 가능합니다.
5. 해시 테이블(hash table)
많은 쉘은 빠른 검색을 위해 이전에 찾은 명령어의 경로를 해시 테이블에 캐시합니다. 이후 같은 명령어를 실행할 때, 쉘은 먼저 해시 테이블을 확인하여 프로그램을 빠르게 찾을 수 있습니다.
6. 에러 메시지
위의 단계들을 거쳐도 실행 파일을 찾을 수 없다면, 쉘은 일반적으로 command not found
같은 오류 메시지를 출력합니다. 또는 한글로 '명령어 ...를 찾을 수 없습니다.' 등으로 에러를 남깁니다.
정리
리눅스에서 실행 파일을 찾는 과정은 내장 명령어 확인, PATH
환경 변수를 통한 디렉터리 검색, 실행 권한 확인, 절대/상대 경로에 의한 직접 참조, 해시 테이블을 통한 빠른 접근 순으로 이루어집니다. 이 메커니즘은 실행할 프로그램을 효율적으로 찾기 위해 설계되었으며, 사용자가 쉽게 프로그램을 실행할 수 있도록 합니다.
'Linuxpia > 리눅스 사용 팁' 카테고리의 다른 글
리눅스 쉘에서 시작 파일과 초기화 파일, 그리고 클린업 파일 (40) | 2024.04.14 |
---|---|
쉘의 내장 명령어(builtin commands)는 어떤 것들이 있나요? (40) | 2024.04.13 |
명령어를 확인하는 다양한 방법 (38) | 2024.04.11 |
실행 파일을 찾아가는 과정은 길 찾기, PATH (34) | 2024.04.10 |
이스케이프 문자(escape character) 사용 사례 (36) | 2024.04.09 |