본문 바로가기
!?/Linux

Shell

by Where's my namespace 2014. 1. 11.

리눅스 상에서 터미널에 명령을 치면 그 명령이 실행된다. 물론 존재하는 명령일 경우에. 


어떻게 이런 일이 가능할까. 그건 바로 Shell 때문이다. 


Shell이란, 실제 우리가 사용하는 프로그램은 명령어의 집합체를 의미하는데, 이러한 형태의 프로그램이 실행되기 위해서


는 커널(Kernel)에 적절하게 전달되고 그에 따른 부가적인 작업들을 조정해 줄 수 있는 능동적인 매개체가 필요한데 이 역


할을 수행하는 프로그램을 쉘이라한다. 


단순하게 생각해보면 터미널 -> 쉘 -> 커널로 흘러가면서 명령이 실행되지만, 실제론 터미널과 쉘 사이에 Device Driver


가 존재한다. 


즉, 



                 Data         Data                          Data

커널 <  -  > 쉘 <  -  > 디바이스 드라이버 <  -  > 터미널 



이런 형태로 Data가 흘러간다. 크게 보면 단순히 터미널에서 쉘로 바로 가는 것으로 보는것도 틀린게 아니다. 


디바이스 드라이버에도 2가지 동작 모드가 있는데 Cooked Mode, Raw Mode가 있다. Raw Mode의 경우 터미널에서 입


력이 오면 바로바로 쉘이나 쉘에 의해 실행되는 프로그램에 직접 전달되는 방식이고, Cooked Mode의 경우 디바이스 드


라이버에서 명령어를 한번 해석해 쉘로 전달하는 방식이다. 일반적인 리눅스에서는 Cooked Mode가 사용된다. 만약 


Cooked Mode가 없다면 터미널에서 "Shift + R" 과 같은 두 키를 동시에 입력하는 명령을 사용 할 수 없다.



Shell에도 다양한 종류가 있다. 그 중 리눅스에서 가장 많이 쓰이는 쉘 bash(bourne-again shell)와 ksh, C언어와 유사


한 csh 이를 확장한 tcsh 등등 이 있고, 이러 한 쉘 종류는 리눅스 상에서 chsh 명령을 통해 바꿀 수 있다. 한번쯤 다른 쉘


을 사용해 보고 싶다면 바꾸어 사용해 보는것도 좋다.


'!? > Linux' 카테고리의 다른 글

X 윈도  (0) 2014.03.03
RPM  (0) 2014.03.01
리눅스 파일권한  (2) 2014.01.09
리눅스 관련 자격증  (0) 2013.11.29
VIM / EMACS  (0) 2013.11.23