[Linux] Shell 이란 ? 쉽게 알아보자.

Shell이란, 사용자의 명령어를 운영체제가 알아들을 수 있도록 해석하고 커널에게 전달합니다.

그리고 커널은 해석된 명령어를 받아 하드웨어에 직접적으로 명령을 내립니다.

 

shell의 예시로 우리가 cmd에서 명령어를 칠 때를 봅시다.

shj@DESKTOP-DS69STB:~$ ls -l

저는 이와 같은 ls -l 이라는 명령어를 쳤습니다.

하지만 해석하지못하면, 하드웨어는 "이게 뭔 말이야"라고 하며 이해하기 힘듭니다.

 

그래서 Shell이 필요하고 Shell이 "ls -l" 은 "현재 디렉토리에 있는 내용들을 -l 옵션으로 긴 목록 형식으로 출력해주세요"라고 해석해줍니다.

그러면 해석된 명령을 커널에게 전달하고 커널은 하드웨어에게 해석된 명령을 실행하라합니다.

 

명령어 실행 결과

 


Shell의 주요 기능들

  • 사용자와 커널 사이에서 명령을 해석해 전달하는 명령어 해석기 기능

위에 설명한 내용과 같습니다.

 

  • 쉘 자체에 프로그래밍 기능으로 프로그램 작성이 가능, 반복 수행, 코드 재사용 (쉘 스크립트)

.sh 이라는 쉘 스크립트 파일을 실행시켜 입력한 명령어들이 자동으로 실행되도록 할 수 있습니다. 

 

  • 사용자 환경설정 기능 

초기화 파일 기능을 이용해 사용자의 환경을 설정할 수 있습니다.

로그인 할 때 초기화 파일 실행되어 초기 환경이 설정됩니다.

 


Shell의 종류들

 

  • Bourne Shell (sh)

 Bourne Shell 은 1974년 'Stephen Bourne'  (스티브 본) 이 개발하였고, 최초의 쉘(Shell) 이다.

대부분의 리눅스에 기본적으로 설치가 되어있다. 설치 위치는 '/bin/sh' 이다.

 

  • C Shell (csh)

C Shell 은 1978년 'Bill Joy' (빌 조이가 개발한 쉘(Shell) 이다.

C Shell 은 Bourne Shell 의 사용성을 높이고, 더욱 한 층 강력하게 만들어졌다.

C Shell 은 이름에서 보이다시피 C 언어를 기반으로 만든 Shell 이다. 때문에 강력한 프 로그램 작성 기능을 지니었다. 설치 위치는 '/bin/csh' 이다.

 

  • tee-see-Shell (tcsh)

tee-see-Shell 은 'Carnegie Mellon University' (카네기 멜런 대학교) 의 학생들이 개발하여 1983년.

소스코드를 게시하였다. 간단하게 설명하면 C Shell 에서 명령 행 완성과 명령 행 편집 기능을 추가한 것이다.

초기 맥 OS X 는 tcsh를 기본 셸로 포함하고 있었다. (하지만 배시 쉘에 밀려버렸다.) 설치 위치는 '/bin/tcsh' 이다.

 

  • Z Shell (zsh)

Z Shell 은 'Paul Falstad' (폴 폴스타드) 가 1990년 대학교에 재학 중 일 때 첫 버전을 작성하였다.

Z Shell 은 지금까지의 수 많은 쉘(Shell) 들의 기능을 머금고 있다.

그렇기 때문에 많은 개선 사항들이 갖추어진 확장형 Bourne Shell 이다. 설치 위치는 '/bin/zsh' 이다.

 

  • Bourne-again shell (bash)

Bourne-again shell 은 지금 현 시대에 가장 많이 쓰이는 Shell 이다.

줄여서 Bash Shell 은 GNU 프로젝트를 위해 'Brian Fox' (브라이언 폭스) 가 작성한 쉘(Shell) 이다. 

GNU 운영체제와 리눅스, 맥 OS 등 기본 쉘로 채택 되어있다. (사실상 모든 리눅스가 기본으로 Bash Sehll 만을 사용한다...)  

C Shell 과 Bourne Shell 의 기능들이 많이 포함 되어 있다.

대부분 Shell Script 라고 검색을 하면 Bash Shell 이 나올 것이다.

그만큼 자료가 방대면서 배우기 쉽고, 강력하다는 증거이다.

설치 위치는 '/bin/bash' 이다.

 


이렇게 Shell에 대해 간단하고 쉽게 알아보았습니다.

더 깊게 파고 들자면 shell 환경변수 설정방법, shell script 작성 방법 등등이 있겠지만

아래  따배 선생님의 따배셸을 통해 학습하시면 shell 사용법에 대한 기초에 대해 이해하기 쉬울 겁니다 !

저도 따배셸로 스크립트와 환경변수 공부를 했는데 정말 이해하기 쉽게 설명해주시더라구요 ㅎㅎ

Shell에 대한 설명은 여기까지하며 더 깊이 있는 내용들은 다음에 기회가 되면 포스팅해보겠습니다.

 


참고자료
https://bangu4.tistory.com/242
https://www.youtube.com/watch?v=38wy3gsiR6Q&t=2s