본문 바로가기

프로그래밍/doodle

shell 의 개념

정의

shell이란 쉽게 말해서 운영체제와 사용자 사이를 연결해주는 유틸리티 프로그램이라고 볼 수 있다. 사용자가 명령어를 입력하면 그것을 기계어로 번역하여 운영체제의 커널로 전달해준다.

 

shell은 사용자의 명령어를 기계어로 번역하여 kernel로 전달한다.

 

종류

sh - Bourne Shell

프롬프트 : $

개발자 Steave Bourne의 이름을 딴 unix shell의 오리지널이다. 초기 버전인 만큼 모든 unix 계열 운영체제에서 사용할 수 있지만 미흡한 부분이 상당히 많다. 상호대화형 방식조차 지원되지 않는다. 

 

 

csh - C Shell

프롬프트: %

1978년 William Nelson Joy가 개발한 csh은 C언어를 전신으로 개발되어 sh 보다 쉽고 많은 기능을 제공한다. c언어와 비슷한 형식을 갖고 있으며 sh에 비해 처리속도는 느렸지만 접근성이 쉬워 많이 사용되었다고한다.

 

 

ksh - Korn Shell

프롬프트: $

1983년 AT&T 사의 David Korn이 Bourne shell을 기반으로 개발한 ksh은 현 unix 계열 운영체제에서 가장 많이 사용된다. csh에 존재하는 많은 기능을 갖고 있으면서 처리속도도 더 빠르다.

 

 

bash - Bourne Again Shell

프롬프트: $

1989년 개발자 Brian Fox가 bourne shell을 기반으로 개발한 이 shell은 현재 linux의 표준으로 사용되고 있다. 그렇기 때문에 대부분의 linux 계열 운영체제 사용자가 터미널에서 bash를 사용한다.

bash에는 alias, history, 자동완성(tab)등 명가지 효율적인 기능들이 존재한다.

 

 

zsh - The Z Shell

프롬프트: %

필자가 현재 사용하고 있는 shell로 bash와 ksh에 존재하는 많은 기능들을 갖고있다. 기능에 대한 내용은 zsh 문서에서 확인할 수 있으며 zsh만 갖고있는 독특한 기능도 확인할 수 있다.

 

 

주의

사용자의 명령어를 운영체제에 여과없이 전달해주는 기능인 만큼 root(최상위) 권한으로 실행하는 행위는 철저하게 계산된 상황에서만 이루어져야 한다. 아무런 생각없이 최상위 권한으로 shell 명령어를 실행했다간 운영체제에 무슨 일이 일어날지 예측할 수 없기 때문이다.

 

 

참고

https://jhnyang.tistory.com/57

http://zsh.sourceforge.net/

'프로그래밍 > doodle' 카테고리의 다른 글

Bastion Host 란?  (0) 2021.02.12
Mysql character set 과 collation  (0) 2020.05.17
인코딩이란?  (0) 2020.05.16
Test Fixture  (0) 2019.07.30