관리 메뉴

JIE0025

[리눅스] 셸의 역할과 리눅스 커널, 셸의 종류 본문

Infra/Linux

[리눅스] 셸의 역할과 리눅스 커널, 셸의 종류

sdoaolo 2025. 5. 2. 00:13
728x90

 

✅  명령어를 쳤을 때 리눅스 내부에선 어떤일이 벌어질까? 

  1. 키보드로 입력한 date 문자열을 받아들인다.
  2. date 명령어를 찾는다. 
  3. 발견한 명령어를 실행한다. (리눅스이 본체인 커널이 수행한다)
  4. 실행한 결과로 얻은 문자열을 화면에 표시한다.

 

 

✅  셸 (Shell)

 

커널은 운영체제 중심에서 CPU/ 하드웨어를 관리하면서 명령어를 실행하고 프로세스를 관리한다. 

 

리눅스에선 사용자가 커널을 직접 조작할 수 없게 되어있기 때문에 

둘 사이의 명령어를 받아들이고, 커널의 실행결과를 출력하는 소프트웨어가 필요하다. 

이역할을 하는 소프트웨어가 바로 셸이다. 

 

>> 커널의 인터페이스 역할이다. 

 

 

  • 사용자는 셸에 date명령어를 입력
  • 셸은 리눅스 커널에게 실행을 의뢰한다. 
  • 리눅스 커널은 명령을 실행하고,  셸은 결과를 받아 사용자 화면에 출력한다. 

 

 

shell(조개껍질) 이라는 이름도 커널을 감싸 보호하기 떄문에 붙혀진것이다. 

 

https://wikidocs.net/278175

 

 

✅ 커널과 셸은 왜 나뉘어져있을까?

  1. 커널을 바꾸지 않고 셸만 바꿀수 있다.
  2. 리눅스가 아닌 OS를 사용할때에도 셸만 인식하면 똑같이 사용가능하다
  3. 셸을 사용할 때 에러가 발생하거나 높은 부하가 발생해도 본체인 커널에 미치는 영향은 최소화된다. 

>>  한 프로그램에 너무 많은 기능을 넣기보다는 적절히 분리하는것이 좋은 설계이다. 

 

 

 로그인 셸

 

리눅스에 로그인하면 셸은 사용자를 반기며 입력을 대기한다.

로그인할때 리눅스가 자동으로 셸을 시작하기 때문이다. 

>> 로그인셸이라고 부른다. 

 

 

echo $SHELL 을 입력하면 현재 사용하고 있는 로그인 셸을 확인할 수 있다. 

 

출력결과를 확인했을 때 /bin 디렉터리 밑에  bash가 로그인 셸인데,

별도 지정하지 않으면 배시셸이 로그인셸로 시작된다. 

 

 

 

 

* 셸 스크립트

 

일련의 명령어 흐름을 기술한 파일을 셸 스크립트라고 핮다. 

작은 명령어를 조합해 복잡한 처리를 수행할 수 있게 한다. 

 

 

 

 셸의 종류

 

sh 

  • 스티븐본이 만들어서 본셸이라고 불린다.
  • 리눅스 외에도 FreeBSD Solaris HP-UX AIX등 여러 운영체제에서 사용할 수 있다. 
  • 현재도 셸 스크립트 작성시 sh를  사용하는것이 일반적이다. 
  • 오래된 셸이라 기능이 적고 대화형에서 사용하기에 불편

csh

  • sh보다 대화형 조작에 편리한 기능을 갖추고 있다 .
  • csh이후  tcsh가 나와 많이 사용하지 않음

 

bash

  • 많은 리눅스 기본 로그인 셸로 사용됨
  • 대화형 조작에 필요한 기능 있음 
  • sh바탕으로 기능이 추가된 셸 sh와 호환성이 있다.  

 

tsch

  • 셸 스크립트에는 적합하지 않다 .

 

 


 

references