커널이 시스템 자원을 관리하지만 관리하기 위해서는 유저의 입력을 통해 명령이 실행되거나 프로그램이 실행된다.
이 때 유저의 입력을 어떻게 받아 처리할 것인지 결정하고 도와주는 것이 쉘의 역할이다.
커널(kernel)
컴퓨터 제일 내부에는 하드웨어가 있고, 이 하드웨어를 관리해주는 것이 운영체제(OS)의 핵심 커널이다.
하드웨어(H/W)에는 CPU, 메모리(RAM), 하드디스크(HDD), 기타 입출력 장치 등 실제 직접 조작할 수 없어 커널을 통해 시스템 자원을 효율적으로 관리한다.
눅스의 우분투, 센토스 등의 배포판은 리눅스 커널을 기반
사용자가 쉘을 통해 입력한 명령어를 해석하여 기계가 이해할 수 있는 표현으로 바꾸어 전달해주는 역할이 커널이다.
일종의 OS
쉘(shell)
쉘은 커널을 사용자가 직접 제어하기는 어렵기 때문에 바로 사람이 이해하기 쉬운 형태로 명령어를 입력하면, 그 명령어로 쉘에 해당하는 프로그램들이 해석해서 커널에게 전달해 주는 것, 소프트웨어와 하드웨어간의 커뮤니케이션을 관리하는 프로그램
-> 사용자(명령)-> 쉘(해석) -> 커널(명령 수행 후 결과 전송) -> 쉘(해설) -> 사용자(결과 확인)
명령어 해석기 기능, 프로그래밍 기능(Shell Script), 사용자 환경 설정 기능( 파일의 권한 설정, 명령어를 찾아오는 경로 설정 등)
cat /etc/shells을 입력하면 사용가능한 쉘의 종류를 확인 가능
현재 사용중인 쉘 확인
Bourne Shell(/bin/sh)
본쉘이라고 하며, 최초의 쉘이지만 미흡한 기능이 많다. 일반 유저의 쉘 프롬프트는 $, root사용자의 프롬프트는 #으로 나타난다.
bash (Bourne-Again Shell)
리눅스에서 가장 많이 사용되는 표준 쉘이다. 보통 기본적으로 주어지는 쉘이 bash 이다.