[Linux] 리눅스 쉘(Shell)이란? 터미널(Terminal)과 쉘의 차이

쉘(Shell)이란?

쉘은 운영체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다.(참고1)

 

Shell은 껍데기를 뜻하는 영단어인데, 사용자와 운영체제의 내부(커널) 사이의 인터페이스를 감싸는 층이 쉘이기 때문에 그러한 이름이 붙게 되었다.

 

일반적으로 명령 줄 인터페이스(CLI) 방식과 그래픽 사용자 인터페이스(GUI) 두 가지 종류로 분류된다.

 

쉘은 사용자의 명령어를 읽어 해석하는 명령어 인터프리터(command interpreter)라고 할 수 있다. 

 

 

터미널과 쉘의 차이

터미널과 쉘
[그림 1] 터미널과 쉘

 

 

리눅스에서 터미널은 사용자로부터 명령 텍스트를 입력받고 결과를 출력하는 프로그램이다.

 

쉘은 터미널로부터 명령을 받아 컴퓨터에게 명령을 전달하는 프로그램이다.

 

터미널이 쉘을 감싸고 있는 Wrapper Program이라고 생각하면 된다.

 

터미널을 실행하면 자동으로 쉘이 실행된다.

 

 

쉘의 종류

쉘은 운영체제에 따라 종류가 다르다.

그중 Unix 계열에서는 다음과 같이 두 가지 주요 타입이 존재한다.

 

Bourne Shell

1. sh(Bourne Shell)  - 파일 경로 : /bin/sh

bourne shell은 1979년 Stephen Bourne가 Bell 연구소에서 개발했다. bourne shell은 빠른 속도와 집약성으로 유명하다. 하지만 bourne shell은 상호작용형(interactive) 쉘이 아니고 명령어 기록도 볼 수 없다는 단점이 존재한다.

 

2. ksh(KornShell) - 파일경로 : /bin/ksh

KornShell은 Bourne Shell에 C Shell의 많은 특징을 포함한 쉘이다. C Shell 보다 빠르며 Bourne Shell의 script를 실행시킬 수 있다. 또한 배열, 함수, string 조작 등 C언어스러운 특징을 포함한다. 

 

3. bash(Bourne Again Shell) - /bin/bash

bash는 bourne shell을 대체하기 위한 오픈소스이다. 오늘날 리눅스에서 표준 쉘로 채택됐으며 가장 많이 사용되는 쉘이다. GNU 프로젝트를 위해 Brian Fox가 디자인하였다. bash는 bourne shell과 완벽히 호환될 뿐만 아니라 KornShell과 C Shell의 장점들도 가져왔다.

 

 

C Shell

1. csh (C Shell) : /bin/csh

csh는 Bourne Shell과는 다르게 상호작용형(interactive)이며 명령어 기록도 볼 수 있는 쉘이다. 또한 C언어스러운 문법을 지원한다. 

 

2. tcsh (tc shell)

tcsh는 csh의 기능을 강화한 쉘로써, BSD 계열에서 가장 많이 사용하는 쉘이다. 명령어 편집 기능을 지원한다.

 

 

 

쉘 종류 확인하기

리눅스에서 현재 자신이 어떤 쉘을 사용하고 있는지 확인하려면 아래와 같은 명령어를 입력하면 된다.

 

$echo $SHELL

 

쉘 종류 확인
[그림 2] 쉘 종류 확인

 

위와 같이 사용하고 있는 쉘의 경로를 출력해 준다.

 

/bin/bash는 bash 쉘의 경로이므로 현재 bash 쉘을 사용하고 있음을 확인할 수 있다.

 

다음 시간에는 쉘 스크립트에 대해 알아보도록 하자.

 


참고

 

1. https://ko.wikipedia.org/wiki/%EC%85%B8

2. https://www.tutorialspoint.com/unix/unix-what-is-shell.htm

3. https://www.tutorialspoint.com/difference-between-terminal-console-shell-and-command-line

4. https://www.datacamp.com/blog/what-is-shell#how-shell-has-evolved-over-the-years

반응형

댓글

Designed by JB FACTORY