Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

제4장. 커널과 쉘 이해하기

1. 하드웨어와 커널, 쉘, 사용자

리눅스 시스템은 크게 네 가지 주요 구성 요소로 나눌 수 있습니다:

[사용자] ↔ [쉘] ↔ [커널] ↔ [하드웨어]
  • 하드웨어: 실제 물리 장치 (CPU, 메모리, 디스크 등)
  • 커널: 하드웨어를 직접 제어하는 리눅스의 핵심 (운영체제의 심장)
  • : 사용자의 명령어를 해석해서 커널에 전달하고, 결과를 사용자에게 출력
  • 사용자: 터미널이나 GUI를 통해 시스템을 조작하는 사람

리눅스에서 우리는 보통 쉘(Shell) 을 통해 시스템을 조작합니다. 이전 장에서 사용했던 명령어들도 전부 쉘을 통해 입력한 것입니다.


2. 쉘(Shell)이란 무엇인가?

쉘은 커널과 사용자 사이의 명령어 인터페이스 역할을 합니다. 사용자가 입력한 명령을 커널이 이해할 수 있도록 번역하고, 커널의 출력을 사람이 읽을 수 있도록 가공해 보여줍니다.

쉘은 보통 터미널에서 실행되며, 우리가 입력한 명령어 한 줄 한 줄을 해석하고 실행합니다.


3. 쉘의 종류

리눅스에는 다양한 종류의 쉘이 존재합니다. 그 중 가장 널리 사용되는 몇 가지는 다음과 같습니다:

쉘 이름설명
shBourne Shell. 전통적인 유닉스 기본 셸
bashBourne Again SHell. 대부분 리눅스에서 기본 채택된 쉘
zsh기능이 강력하고 사용자 친화적인 쉘
fish자동 완성, 구문 강조 등 편의 기능이 많은 쉘
dash매우 가벼운 쉘. 일부 시스템 스크립트에 사용

4. 다양한 쉘을 사용하는 이유

쉘마다 문법, 기능, 성능 특성이 다르기 때문에 용도에 맞게 선택할 수 있습니다.

  • bash: 범용 사용에 적합, 대부분의 리눅스 배포판에서 기본값
  • zsh: 테마와 자동완성 기능이 풍부해 개발자들에게 인기
  • dash: 부팅 속도에 유리한 경량 쉘

장점 요약:

  • 사용자 경험 향상 (예: zsh의 자동완성)
  • 스크립트 호환성 확보 (POSIX 호환용으로 dash 사용)
  • 특정 작업 최적화 (예: 경량 쉘로 빠른 실행)

5. 우리는 지금 어떤 쉘을 쓰고 있을까?

현재 사용하는 쉘 확인

echo $SHELL

사용자 기본 로그인 쉘 확인

getent passwd $USER

출력 예시:

user:x:1000:1000::/home/user:/bin/bash

/bin/bash 가 현재 로그인 시 사용하는 기본 쉘입니다.


6. 지금까지는 bash 기반 실습

이 책에서는 기본적으로 bash를 사용해 실습하고 있습니다. 하지만 이후에는 다양한 쉘을 경험하고, 본인의 작업 스타일에 맞는 쉘을 선택해볼 수 있습니다.

향후 쉘 스크립트를 배울 때도 어떤 쉘을 기반으로 작성하는지가 중요하니, 지금부터 ’쉘’이라는 개념을 명확히 이해해두는 것이 중요합니다.


정리

이번 장에서는 리눅스의 구조를 구성하는 주요 요소인 하드웨어 ↔ 커널 ↔ 쉘 ↔ 사용자의 관계를 살펴보았고, 우리가 명령어를 입력하는 창인 이 어떤 역할을 하는지 이해했습니다. 또한 여러 쉘의 종류와 차이점, 우리가 사용 중인 쉘을 확인하는 방법도 함께 배웠습니다.

다음 장에서는 파일 권한과 사용자 계정에 대해 본격적으로 학습합니다.