1) 개 요
‘쉘’이란 리눅스에서 대화형 사용자 인터페이스를 부르는 용어이며, 쉽게 명령어 해석기라고 이해할 수 있습니다. 우리가 X-윈도우를 쓰지 않는, 즉 검은 화면인 TUI 인터페이스로 리눅스에 로그인하면 ‘쉘’이라는 상태로 들어가게 됩니다. 이 시커멓고 단순한 쉘이라는 녀석은 우리가 입력하는 명령어를 해석하여 그 결과를 커널에 전달하고 원하는 일들을 수행하게 해주는 역할을 하게 됩니다. 결국, 쉘은 시스템과 사용자 사이에서 중계 역할을 담담하는 인터페이스이며 사용자가 입력하는 명령어들을 운영체제가 이해할 수 있는 명령어로 바꾸고 운영체제가 처리한 결과 값을 사용자에게 알려주는 구실을 하게 됩니다. 쉘은 명령어를 실행시키는 명령어 해석기이면서도 프로그래밍 언어로서의 특성이 있습니다. 쉘이 프로그래밍 언어로서의 특성이 있다는 사실은 별도의 프로그램을 사용하지 않고도 시스템을 보다 효율적으로 운영할 수 있는 내부 루틴을 작성할 수 있다는 것을 의미합니다. 다음은 쉘과 커널의 관계를 그림으로 표현한 것입니다.
[Shell과 Kernel의 관계]
Hardware – Kernel – Shell – 사용자 or 응용프로그램
(출처 : http://blog.naver.com/naenoo0112Redirect=Log logNo=50115721022)
사용자가 Shell에게 자연어로 명령으로 하고 Shell은 그 명령을 기계어로 바꿔서 Kernel에게 전달합니다. Kernel은 명령을 수행후 결과를 Shell에게 전달하고 다시 Shell은 자연어로 번역하여 사용자에게 전달합니다. (의사소통을 담당)
....