'셸(Shell)'은 사용자의 명령어를 해석하고 운영체제가 알아들을 수 있게 지시해주는 것으로, 사용자와 커널을 이어주는 것
'커널(kernel)'은 이와 같은 내용을 받아 하드웨어에 직접적으로 명령을 내려준다
셸은 하드웨어에 직접 명령을 수행하는 '커널'과 '사용자'를 이어주는 중간다리와 같은 역할을 한다
셸 : 사용자가 글자를 입력하여 컴퓨터에 명령할 수 있도록 하는 프로그램
터미널/콘솔 : 셸을 실행하기 위해 글자 입력을 받아 컴퓨터에 전달하거나 컴퓨터의 출력을 글자 화면에 쓰는 프로그램
Unix나 Linux 시스템의 경우 ps 명령을 실행할 때 나타나는 프로세스 중에 bash, sh, ksh, csh 등이 셸 프로그램이며,
Windows의 경우 작업 관리자에서 볼 수 있는 explorer.exe가 셸이다
Windows의 경우 explorer.exe 이외에도 cmd.exe가 추가적으로 지원되는데, 이는 DOS 호환을 위한 것이다
DOS란 무엇인가 ?
DOS란 Disk Operating System의 약자로 개인용컴퓨터(PC;Persnal Computer) 의 운영체제에 붙이는 이름이다
이름에서 나타나 있듯이 디스크를 위주로 동작하고 있는데, 특히 디스크에서 파일을 읽어 오거나 기록하는 작업과 이러한 작업을 위하여 디스크 장치를 제어하고 관리하는 작업등을 수행 한다
프롬프트 : $(일반유저) / #(root유저)
가장 오랜 기간 동안 UNIX 시스템의 표준 셸로 이용되었다
상호대화형(interpreter) 방식을 취하고 있지 않다
/bin/sh와 /sbin/sh가 있다 (셸의 절대 경로)
ksh, zsh, bash 등이 이 계열이다
프롬프트 : #
Bounce Shell의 변종이다
리눅스에서 기본으로 지원되는 셸로, 사용자 계정을 생성할 때 특별한 셸을 지정하지 않으면 기본적으로 bash 셸로 지정된다
/bin/bash
프롬프트 : %
C언어와 유사한 언어를 사용한다
상호 대화형 방식으로 구성되어 있다
Bounce Shell과 대부분 호환되며, 명령행 편집기능을 제공하지 않는다
프롬프트 : $
유닉스에서 가장 많이 사용되고 있는 셸이다
Bounce Shell에 C Shell로부터 차용한 현대적 기능을 도입한 셸이다
셸은 단지 프로그램이며, 시스템에 대한 특별한 권한을 가지지는 않는다
누구나 자신만의 셸을 만들 수 있고, 위처럼 특정한 목적을 갖고 각각 고유한 기능과 개성을 가진 다양한 셸들이 존재한다