일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- NumPy
- 반복문
- 셸
- for문
- ElasticSearch
- python
- 매핑
- 일본어형태소분석기
- bulk
- Sort
- shell
- json
- Size
- 제로베이스pm스쿨
- 제로베이스
- pm스쿨28기
- elif문
- kibana
- if문
- 파이썬
- pm
- else문
- UNIX
- mapping
- 학습일지
- 조건문
- while문
- kuromoji
- 제로베이스부트캠프
- 블록구조
- Today
- Total
code name blue
Shell 이란? : Shell의 정의와 종류 본문
프로그래밍을 공부 하면서 가장 어려웠던 점이, 여태까지는 아이콘과 마우스 클릭으로 이루어 졌던 모든 일들이 다 몇 줄의 명령어로 수행해야 한다는 것이었다.
즉각적으로 눈에 보이는 구조가 아니라 머릿속에 내 나름대로 계속해서 구조를 인지하고 있어야 한다는 점이 익숙하지 않았다.
터미널 창을 띄우고 거기에 간단한 명령어들을 입력해 보면서 기초 예제들을 따라하기는 했지만, 기본적으로 이 시스템 자체에 대한 이해가 필요할 것 같아 그 중 '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로부터 차용한 현대적 기능을 도입한 셸이다.
셸은 단지 프로그램이며, 시스템에 대한 특별한 권한을 가지지는 않는다. 누구나 자신만의 셸을 만들 수 있고, 위처럼 특정한 목적을 갖고 각각 고유한 기능과 개성을 가진 다양한 셸들이 존재한다.
참조
'Programming > Tutorial' 카테고리의 다른 글
Editor 사용하기! : vim - vimtutor로 공부하기 (0) | 2019.04.18 |
---|