code name blue

Shell 이란? : Shell의 정의와 종류 본문

Programming/Tutorial

Shell 이란? : Shell의 정의와 종류

byebyeblue 2019. 4. 13. 18:10

프로그래밍을 공부 하면서 가장 어려웠던 점이, 여태까지는 아이콘과 마우스 클릭으로 이루어 졌던 모든 일들이 다 몇 줄의 명령어로 수행해야 한다는 것이었다.

즉각적으로 눈에 보이는 구조가 아니라 머릿속에 내 나름대로 계속해서 구조를 인지하고 있어야 한다는 점이 익숙하지 않았다.

터미널 창을 띄우고 거기에 간단한 명령어들을 입력해 보면서 기초 예제들을 따라하기는 했지만, 기본적으로 이 시스템 자체에 대한 이해가 필요할 것 같아 그 중 'Shell'에 대해 정리 해 보기로 했다.

 


 

Shell 이란?

 

'셸(Shell)'은 사용자의 명령어를 해석하고 운영체제가 알아들을 수 있게 지시해주는 것으로, 사용자와 커널을 이어주는 것이다.

'커널(kernel)'은 이와 같은 내용을 받아 하드웨어에 직접적으로 명령을 내려준다.

 

우리는 위와 같은 형태로 컴퓨터에게 명령을 내리기는 하지만, 저 언어들이 온전히 컴퓨터(하드웨어)가 즉각적으로 이해할 수 있는 언어는 아니다.

따라서 셸은 하드웨어에 직접 명령을 수행하는 '커널'과 '사용자'를 이어주는 중간다리와 같은 역할을 한다.

윈도우(Windows) 운영체제 에서는 '명령 프롬포트(cmd)'로, 맥(MAC) OS X 운영체제 에서는 '터미널(Terminal)'로 셸을 실행할 수 있다.

 

여기서 조금 더 구체적으로 보자면 셸과 터미널/콘솔은 사실 조금 다른 의미를 갖는다.

 

  • 셸 : 사용자가 글자를 입력하여 컴퓨터에 명령할 수 있도록 하는 프로그램

  • 터미널/콘솔 : 셸을 실행하기 위해 글자 입력을 받아 컴퓨터에 전달하거나 컴퓨터의 출력을 글자 화면에 쓰는 프로그램

하지만 셸과 터미널/콘솔은 항상 같이 실행되므로 둘은 보통 같은 의미로 사용하고 있다고 이해하면 될 것이다.

 

'프롬프트'란 컴퓨터가 사용자의 입력을 받아들일 준비가 되었다고 나타내는 메세지로, 위의 이미지에서

          -MacBook-Pro:~ summerboy$

위와 같이 표현된 부분이 프롬프트 이다.

 

 

Shell의 종류

 

Unix나 Linux 시스템의 경우 ps 명령을 실행할 때 나타나는 프로세스 중에 bash, sh, ksh, csh 등이 셸 프로그램이며,

Windows의 경우 작업 관리자에서 볼 수 있는 explorer.exe가 셸이다.

Windows의 경우 explorer.exe 이외에도 cmd.exe가 추가적으로 지원되는데, 이는 DOS 호환을 위한 것이다.

 

sh (Bounce Shell)

프롬프트 : $(일반유저) / #(root유저)

- 가장 오랜 기간 동안 UNIX 시스템의 표준 셸로 이용되었다. 상호대화형(interpreter) 방식을 취하고 있지 않다.

- /bin/sh와 /sbin/sh가 있다. (셸의 절대 경로)

- ksh, zsh, bash 등이 이 계열이다.

 

bash (Bourne-Again Shell)

프롬프트 : #

- Bounce Shell의 변종이다.

- 리눅스에서 기본으로 지원되는 셸로, 사용자 계정을 생성할 때 특별한 셸을 지정하지 않으면 기본적으로 bash 셸로 지정된다.

- /bin/bash

 

csh (C프로그램 스타일 Shell)

프롬프트 : %

- C언어와 유사한 언어를 사용한다.

- 상호 대화형 방식으로 구성되어 있다.

- Bounce Shell과 대부분 호환되며, 명령행 편집기능을 제공하지 않는다.

 

ksh (Korn Shell)

프롬프트 : $

- 유닉스에서 가장 많이 사용되고 있는 셸이다.

- Bounce Shell에 C Shell로부터 차용한 현대적 기능을 도입한 셸이다.

 

셸은 단지 프로그램이며, 시스템에 대한 특별한 권한을 가지지는 않는다. 누구나 자신만의 셸을 만들 수 있고, 위처럼 특정한 목적을 갖고 각각 고유한 기능과 개성을 가진 다양한 셸들이 존재한다.

 


참조

https://unabated.tistory.com/entry/LinuxUnix%EC%89%98-Shell-%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%EC%A2%85%EB%A5%98?category=269885

 

[Linux/Unix]쉘 (Shell) 의 정의와 종류

- Shell 쉽게 표현하면 윈도의 command.com(시작-실행-cmd)이 하는 역할처럼 login 이후부터 사용자가 입력하는 명령어를 기계어로 변역하여 커널에 전달하는 역할을 하는 명령어 해석기를 말한다. Shell이란 한마..

unabated.tistory.com

https://ithub.tistory.com/205

 

shell, bash, zbash의 간단 개념정리

linux 계열 운영체제를 사용하시는 분들 중 bash, bashrc, zbash 에 대한 개념이 없거나, 헷갈리시는 분들 가볍게 읽어주세요. ;) shell, sh, bash, zbash 등.. 간단하게 알아보자. shell이란? 명령어 처리기 (aka..

ithub.tistory.com

 

'Programming > Tutorial' 카테고리의 다른 글

Editor 사용하기! : vim - vimtutor로 공부하기  (0) 2019.04.18
Comments