Shell과 Terminal 의 차이점

HOJIN JUNG·2023년 3월 28일
0

Linux

목록 보기
4/4
post-thumbnail

The Linux Story 의 마지막 이야기 입니다. 쉘과 터미널이 혼용되어서 사용되지만 엄연히 구분하여 알아야 할 개념입니다. 차근차근 이해하며 읽기 쉽게 번역하는 것을 목표로 합니다.

🚪 들어가기에 앞서

"텍스트를 입력하여 컴퓨터를 동작시킨다"는 CLI(Command Line Interface)를 통해 명령어를 컴퓨터에 전달한다는 것이다. 리눅스 세계에서는 CLI를 Shell(쉘)이라고 일컫지만, 때로는 쉘과 동작하는 프로그램을 터미널 에뮬레이터라고도 한다. 명령어를 입력하여 하드웨어를 작동시키기 위한 프로그램이 쉘이라면 쉘을 동작시킨다는 것은 도대체 무엇을 의미하는 것일까?



1. Shell 을 먼저 이해할 것

운영체제에서 커널은 중요한 역할을 한다. 커널은 물리적 하드웨어를 식별하고 그 하드웨어끼리의 통신을 원활하게 할 수 있도록 돕는다. 루트에서 커널은 사용자로부터 명령어를 전달받아 하드웨어를 작동시킨다. 사용자는 커널과 직접적으로 마주할 일이 없다. 쉘이라고 불리는 프로그램이 커널과 사용자 사이 있기 때문이다. 즉, 쉘은 사용자와 커널 사이 인터페이스라는 것을 알 수 있다.

Bash Shell은 도대체 뭐야?

리눅스 배포의 대부분은 Bash Shell이라고 불리는 쉘을 사용한다. Bash는 원래 GNU Project 쉘(유닉스 쉘 프로그램의 모방)이었다. Unix Shell은 Steve Bourne에 의해 만들어졌기 때문에, 이를 모방한 GNU Project는 Bourne Again Shell(Bash)이라고 명한 것이다.



2. 터미널은 에뮬레이터*에 불과해!

* 에뮬레이터

  • 하드웨어나 소프트웨어를 다른 환경에서 모사하여 원래의 시스템과 유사한 환경을 만드는 프로그램
  • 데스크탑 환경에서 쉘에 쉽게 접근할 수 있도록 돕는 프로그램(터미널)

Ubuntu(Linux의 배포판 중 하나) 데스크탑 환경은 GNOME(GNU Network Object Model Environment)에서 수정된 배포판이다. GNOME은 GUI를 통해 리눅스 운영체제의 프로그램을 동작시킬 수 있도록 하였다. 이때, 쉘과 함께 통신하여 커널에 명령어를 전달할 수 있는 소프트웨어가 필요했다. 우리는 이를 에뮬레이터라고 부른다. 정리해보자면 에뮬레이터는 데스크탑 환경에서 사용자가 쉘 환경을 쉽게 이용할 수 있도록 작동하는 프로그램이고 터미널은 에뮬레이터의 한 예시인 것이다.

여기서 주의할 점은 터미널과 쉘은 다른 것이다. 쉘과 함께 대화할 수 있도록 데스크탑 환경에서 제공하는 에뮬레이터가 터미널이다.

profile
근거를 가지고 앞으로 나아가는 엔지니어

0개의 댓글