[Linux] 2. 셸이란 무엇인가?
이 블로그는 '모두의 리눅스'라는 책을 이용해 개인적으로 공부한 내용을 간략하게 적은 것이기 때문에 책 내용과 다를 수 있다는 점 고려해서 참고해주시기 바랍니다!
1. 셸이란?
2장은 셸이란 무엇일까? 라는 주제였다. 셸이라.. 나에겐 너무나도 어려운 개념 중 하나였다. 예전에 드림핵의 문제를 풀 때 shell basic 이랑 clamshell coding 문제가 진짜 어려웠는데 이게 shell이랑 관련이 있었던거로 기억한다. (너무 예전에 해서 정확하겐.. 모른다.)
근데 책에서 설명을 명확하게 해 주었다.
셸은 커널의 인터페이스에 해당한다.
명령어를 실행하는 것은 커널이고 이 커널의 결과를 출력하는 소프트웨어가 셸이다.
그럼 왜 둘을 분리해두었을까 라는 의문이 가장 먼저 든다. 그 이유는 리눅스 외의 os를 사용할 때에도 셸만 잘 이식하면 똑같이 커널을 사용할 수 있다. 그리고 에러가 발생해도 리눅스 커널에 미치는 영향이 줄어든다.
- 대화형 조작
명령어를 입력하고 그 결과를 보면서 셸을 사용하는 조작 방식을 대화형(인터렉티브)라고 한다.
- 셸 스크립트
실행하고 싶은 명령어들을 미리 파일에 기록하고 그 파일을 셸에 넘겨주는 방식으로 명령을 수행할 수 있으며 이런 일련의 명령어의 흐름을 기술한 파일을 셸 스크립트라고 한다.
2. 프롬프트
mobuk@ubuntu : ~$
위에 있는 것이 셸의 프롬프트이다. mobuk은 사용자의 이름 ubuntu는 호스트의 이름이다. 프롬프트를 커스터마이징 할 수 있다고는 하는데 나중에 다루도록 하겠다 .
그리고 일반 사용자는 $ 슈퍼사용자는 #을 사용하고 있다는 것을 알아두면 좋다(리눅스 공식 문서에서도 이렇게 구분하여 사용한다.)
리눅스에서는 별로도 지정하지 않으면 /bin 디렉터리의 bash가 로그인 셸로 지정된다. 자신이 사용하는 셸을 확인하고 싶으면 echo $SHELL 을 입력하면 된다.
3. 셸의 종류
sh, csh, bash, tsch 등 다양한 셸이 있다.
1) sh
표준 셸의 지위를 가지고 있음. 그러나 오래되어서 대화형에서는 사용이 어려움. 그래서 로그인 셸로는 잘 사용을 안함.
2) csh
sh보다 대화형 조작에 편리함. 그러나 셸 스크립트 작성은 불편함.
3) bash
sh를 기본으로 기능이 추가된 셸로 sh를 대체할 수 있고 대화형 조작에 필요한 기능을 가지고 있음. 그래서 로그인 셸로 많이 사용함.
4) tsch
csh에 이어 개발된 C셸 계열의 셸이다. 대화형 조작에 편리한 기능을 많이 갖추고 있지만, 셸스크립트에는 적합하지 않다. 사용자 프롬프트가 %인 것이 특징이다.
5) zsh
비교적 최근에 개발된 것으로 독자적인 기능이 있음. 모든 기능을 익히는데 시간은 걸리나 익숙해지면 작업 효율이 굉장히 높아짐.
=> 리눅스를 처음 사용하면 bash 셸을 사용하는 것이 좋음.
셸을 바꾸는 방법은 그냥 사용하고 싶은 셸 이름을 입력하면 됨. 이때 셸이 중첩되어 실행된다는 것을 기억하면 좋음. 그래서 중첩된 셸을 나가고 싶으면 logout을 입력하면 됨.
4. 터미널
터미널과 셸은 다른 개념이다. 원래 터미널은 단순히 입출력을 담당하는 하드웨어를 의미한다. 하지만 최근에는 소프트웨어로 구현한 터미널 에뮬레이터도 있다.
윈도우에서 리눅스로 원격 로그인했다고 가정하면 터미널 에뮬레이터는 윈도우에서 돌아가고 있지만 셸은 리눅스에서 돌아가고 있다.
즉, 터미널은 입출력 화면만 제공하는 소프트웨어라고 생각하면 된다.
'Linux' 카테고리의 다른 글
[Linux] 4. 파일과 디렉터리 (0) | 2022.08.10 |
---|---|
[Linux] 3. 셸을 능숙하게 다루는 방법 (0) | 2022.08.10 |
[Linux] 1장. 리눅스 설치하기 (0) | 2022.08.09 |
[Tool] Pwntool 설치 및 사용법 (0) | 2022.02.07 |
[Tool] pwndbg 설치 & 사용법 (0) | 2022.02.07 |