명령어 중에는 셸에 내장되어 있는 것도 있습니다. 이런 것을 내부(internal)명령어라고 하며, 셸이 실행 파일의 경로를 찾아 실행시키는 명령어를 외부(external)명령어라고 합니다. 내부 명령어는 부팅할 때 셸과 함께 메모리에 적재되는 특징이 있어 외부 명령어와는 다르게 실행할 때 새로운 프로세스를 만들 필요가 없습니다. 생각해 봅시다. DOS를 사용할 때에도, 실행 파일이 있어야만 사용할 수 있는 명령(format 등 대부분의 명령)과, 실행 파일 없이도 사용할 수 있던 명령이 있었습니다. 아마도 이것이 내부 명령어와 외부 명령어의 차이로 생각할 수 있을 것입니다. 내부 명령어는 시스템에 꼭 필요한 명령으로 되어 있어 별도의 실행 파일 없이도 동작하는 것이 보통입니다만, 외부 명령어의 경우에는 해당하는 실행 파일이 있는지의 여부가 중요하게 작용합니다. 그렇다면 어떤 명령어가 내부 명령어이고 어떤 명령어가 외부 명령어인지 확실하게 알기 위해서는 어떻게 해야 할까요? 다음과 같이 입력한 다음, 결과를 살펴봅시다.

# help

많은 명령어들이 나옵니다. 이것이 바로 리눅스에서 사용하는 내부 명령어입니다. 그렇다면 그 중 한 가지 명령을 더 자세히 살펴보도록 하겠습니다.

[folder@hanbit test]$ help cd

help 명령 뒤에 자세히 알고 싶은 내부 명령어를 입력하면, 이 명령의 기능 등의 설명을 자세히 볼 수 있습니다.

내부 명령어별 간단한 소개를 해 주시면 좋겠어요. 표로 그려 주시면 더욱 좋고요. 분량은 좀 되지만 필요한 부분이라고 생각합니다.

셸에서 프로그램을 실행하는 데는 세 가지 방법이 있습니다. 우리가 가장 흔히 사용하는 외부 명령어인 ls로 이런 방법을 확인해 보겠습니다.

첫 번째는 파일의 절대 경로를 이용하여 프로그램을 실행하는 것입니다. ls의 실행 파일은 /bin 밑에 자리하고 있습니다. 한번 ls 대신에 /bin/ls를 입력해 보겠습니다. 분명히 조금은 다르죠? 컬러링 옵션도 없고요. 그야말로 아무런 옵션 없는 순수 ls를 보실 수 있습니다.

두 번째는 우리가 일반적으로 사용하는, 프로그램의 이름만을 입력하여 실행하는 방법입니다. 이 방법을 이용하기 위해서는 실행하려는 프로그램이 기본적으로 명령을 탐색하는 디렉토리 안에 들어 있어야 합니다. 이런 기본 검색 디렉토리는 PATH라는 변수에 기록되어 있습니다. 물론 필요에 따라 얼마든지 수정할 수 있는 부분입니다. 그러면, 우리가 실행하고자 하는 ls 가 들어있는 /bin이 PATH에 설정되어 있는지 확인해 보겠습니다.

[heyjin@heyjin Work]$ echo $PATH /bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/home/heyjin/bin

물론 PATH의 내용은 개인의 설정에 따라 다를 것입니다. 설정을 보면, /bin이 PATH 안에 기록되어 있다는 사실을 확인할 수 있습니다. 우리가 ls를 입력하면, PATH 안에 지정된 경로 안에 ls 가 있는지 찾아서 확인합니다. PATH에 대한 더 자세한 내용은 조금 뒤에 설명하겠습니다.

마지막으로, 링크를 이용하는 방법이 있습니다. 복잡한 경로의 특정 파일을 종종 이용하거나, 혹은 중구난방으로 흩어진 라이브러리 파일이나 설정 파일 등을 쉽게 관리하기 위한 방법으로도 사용되는 링크는 윈도에서의 바로 가기와 같은 것이라고 생각하시면 이해하기 쉬운 내용입니다. 링크에는 소프트 링크와 하드 링크가 있으며, 약간의 차이는 있지만 사용하는 입장에서는 크게 다를 것은 없습니다. 우리가 일반적으로 사용하는 것은 소프트 링크입니다.

링크를 거는 명령어는 ln입니다. 이것으로 소프트 링크와 하드 링크를 다음과 같이 테스트하겠습니다.

[heyjin@heyjin heyjin]$ ln -s /etc/fstab fstab [heyjin@heyjin heyjin]$ ls -l fstab lrwxrwxrwx 1 heyjin heyjin 10 5월 6 09:32 fstab -> /etc/fstab [heyjin@heyjin heyjin]$ rm fstab [heyjin@heyjin heyjin]$ ln /etc/fstab fstab [heyjin@heyjin heyjin]$ ls -l fstab -rw-r–r– 2 root root 769 3월 13 14:50 fstab

소프트 링크를 만들 경우에는 ln 뒤에 -s 옵션을 붙입니다. 옵션 없이 사용하면 하드 링크가 되지요. 소프트 링크 파일은 원본 파일의 위치 정보만을 기억하기 때문에 용량이 작으며, ls -l로 살펴보았을 때 링크된 파일이라는 뜻의 l과, 파일 이름 뒤에 적힌 원본 파일의 경로를 볼 수 있습니다. 이 파일을 열어 보면, /etc/fstab의 내용으로 바로 연결됩니다. 하드 링크의 경우에는 특별히 링크라고 표시 나는 점은 없습니다. 있는 그대로 용량이 보이고 ls를 해 보는 것 만으로는 링크라는 티도 나지 않습니다. 하지만 이 파일을 열어 수정하면 원본 파일도 함께 수정됩니다. 물론 이 파일을 삭제하더라도 원본에는 이상이 없습니다.

링크는 복잡한 경로의 파일이나 디렉토리에 쉽게 접근하여 사용할 수 있는 방법입니다. 그러나 상대 경로로 여러 파일들을 참고하는 프로그램의 경우에는 링크를 이용하여 실행하는 것은 좋은 방법이 아닙니다. 이 경우에는 PATH 환경변수에 이 경로를 넣어 주시는 것이 더 현명한 방법입니다.