dev-minchur 님의 블로그

커널과 셀이란?? 본문

Linux

커널과 셀이란??

dev-minchur 2025. 1. 8. 00:01

셀의 역할

  • 리눅스에서는 사용자가 커널을 직접 조작할 수 없기 때문에 커널이 명령어를 받아들이고 커널의 실행 결과를 출력하는 소프트웨어가 필요
  • 이 역할을 수행하는 소프트웨어가 셸임
  • 셸은 사용자와 커널의 인터페이스 역할을 함
  • 셸은 리눅스 커널을 감싸는 역할을 담당하기 때문에 셸이라는 이름이 붙여졌다고 볼 수 있음
  • 리눅스를 다룰 떄는 기본적으로 셸을 사용해야 하며, 리눅스를 잘 다루기 위해서는 셸을 잘 알아야 함

커널과 셸의 분리

  • 커널과 셸은 분리되어 있음
  • 커널을 운영체제 핵심 소프트웨어 이므로 교체하기 힘듬
  • 셸은 사용자의 요구사항에 맞게 선택할 수 있음

프롬프트

[사용자이름]@[호스트 이름]:~$
  • 셸의 프롬프트(prompt)라고 함
  • 프롬프트는 사용자에게 어떤 결정을 내리도록 한다는 의미
  • 즉, 셸이 사용자에게 명령어를 받아들일 준비가 되었음을 나타낸다고 보면 됨

프롬프트 기호

  • 일반 사용자의 프롬프트 기호는 $ / 슈퍼 유저일 경우 #

로그인 셸

  • 사용자가 로그인할 때 리눅스가 자동으로 셸을 시작하기 떄문에 리눅스에 로그인하면 셸이 사용자의 입력을 기다림
  • 로그인 후 처음으로 시작되는 셀을 로그인 셸이라고 부름

셸 스크립트

  • 명령어를 직접 입력하고 그 결과를 확인하는 조작 방식을 대화형(인터렉티브)방식이라고 함
  • 실행하고 싶은 명령어들을 미리 파일에 기록하고 그 파일을 셸에 넘겨주는 방식으로 명령을 수행할 수 있도록 만든 파일을 셸 스크립트라고 함
  • 셸 스크립트는 명령어를 조합해 복잡한 처리를 수행한다는 리눅스의 철학이 담긴 강력한 도구
    #! /bin/bash
    today =$( date "+%d")

    종류

  • 리눅스에서 기본적으로 사용하느 셸은 bash를 사용
  • 리눅스에서 bash 외에도 다양한 셸을 사용할 수 있음

sh

  • 아주 오래전에 만들어진 셸이며 리눅스 뿐만 아니라 유닉스 계열에서도 사용할 수 있음
  • 현재도 셸 스크립트를 작성할 때는 sh를 사용하는 것이 일반적임
  • 하지만 오래된 셸이라 기능이 적고 특히 대화형에서 사용하기는 불편하기 때문에 일반 사용자가 사용하는 경우는 거의 없음

csh

  • csh도 무척 오래된 셸 중 하나 C셸로 불림
  • sh보다 대화형 조작에 편리한 기능을 갖고 있어 인기가 많았지만 셸 문법이 sh와 달라 셸 스크립트 작성에는 적합하지 않음
  • 현재는 csh의 뒤를 잇는 tcsh가 나와 많이 사용하지 않음

bash

  • sh를 바탕으로 기능이 추가된 셸
  • sh와 호환성이 있어 sh를 대체할 수 있고, 대화형 조작에 필요한 기능을 갖추고 있어 많은 리눅스에서 기본 로그인 셸로 사용하고 있음
  • 셸 스크립트를 작성하는 데도 적합함

tsch

  • csh에 이어 개발된 C셸 계열의 셸
  • 대화형 조작에 편리한 기능을 많이 갖추고 있지만, csh와 마찬가지로 셸 스크립트에 적합하지 않음
  • tcsh등 C셸 계열엣는 일반 사용자 프롬프트가 $이 아닌 %를 사용
  • 맥OS도 10.2전까지는 기본 로그인 셸로 tcsh를 사용함

zsh

  • 비교적 최근에 개발된 셸로, bash와 tcsh의 기능에 독자적인 기능이 추가됨
  • 무척 다양한 기능을 갖추고 있어 메뉴얼만 17개 섹션에 달한다.
  • 모든 기능을 익히는 데 시간이 걸리지만, 익숙해지면 작업 효율을 크게 높일 수 있음
  • 다만 초보자가 바로 시작하기에는 다소 어려움이 있음