본문으로 바로가기

리눅스 쉘에 명령을 타이핑하면 쉘은 입력을 읽고 명령 라인을 파싱한다. 이 명령라인은 '토큰' 으로 분리된다.

토큰은 공백이나 탭으로 분리되고 명령라인은 newline으로 종결된다.

 

쉘은 명령라인의 첫 단어가 빌트인 명령인지, 디스크에 위치한 실행 가능 프로그램인지를 체크한다.

만약 첫 단어가 빌트인 명령이라면 내부적으로 명령을 실행하고, 외부 프로그램이라면 쉘은 프로그램의 위치를 검색하기 위해 PATH 변수에 지정된 디렉터리를 검색한다.

필요하다면 명령이 수행되어 종료된 프로그램의 상태를 알려주고 다시 프롬프트가 나타나고 명령을 기다린다.

 

명령 라인 프로세싱의 순서는 다음과 같다.

 

1. 히스토리 치환

2. 명령라인은 토큰 혹은 단어 단위

3. 히스토리 업데이트

4. 인용 진행

5. alias 치환 및 함수 정의

6. 리다이렉션, 백그라운드, 파이프 설정

7. 변수 치환(ex. $user, $name ...)

8. 명령 치환

9. globbing 이라는 파일명 치환

10. 명령 실행

 

※ 파싱(Parsing)

파싱은 일련의 문자열을 의미있는 토큰(token)으로 분해하고 이들로 이루어진 parse tree를 만드는 과정을 의미한다.

 

 

쉘 명령어 타입

 

쉘에서는 alias, 함수, 빌트인 명령, 실행 프로그램 등의 명령들이 실행된다.

alias(앨리아스)는 C,TC,bash 쉘에서 실행할 수 있는 명령들의 닉네임 약어(별명)이다. 함수는 본,bash 쉘에서 사용되며 alias와 함수는 쉘의 메모리상에 정의되어 있다.

빌트인 명령어는 쉘에서 내부 루틴이고, 저장장치 내에는 외부 실행 프로그램들이 저장되어 있다.

 

쉘은 명령이 실행되기 전에 자식 프로세스를 찾고, 실행 프로그램의 위치를 찾기 위해 PATH 변수를 사용하는데 이 때에 검색시간이 소요된다.

자식 프로세스가 명령을 실행할 준비를 마치면 다음 순서에 따라 명령 타입을 알아낸다.

 

1. Alias

2. 키워드

3. 함수

4. 빌트인 내장명령

5. 실행파일

 

예를 들어 hello 라는 명령을 실핼하려 할 때, 쉘은 가장 먼저 hello가 alias인지를 체크한다. 등록된 alias가 아니라면 키워드인지, 그 다음으로 함수, 빌트인 명령인지 체크하고 마지막으로 디스크 저장장치에 위치한 실행파일(프로그램)이라고 판단한다. 이 때 쉘은 실행파일 실행을 위해서 PATH 변수에 정의된 경로에서 검색해 실행 파일의 위치를 검색한다.

 

 Other Contents 

댓글을 달아 주세요

티스토리 툴바