Kali Linux 기초 Part. 2 Shell

2025. 3. 18. 11:08보안/Linux

Kali Linux 기초 가이드는 normaltic 강의를 참고하여 제작하였습니다.

 

1. Shell 이란?

Shell(셸)은 사용자와 운영체제(OS) 커널 사이에서 명령을 전달하고 실행하는 인터페이스다.

쉽게말해, 우리가 터미널에서 입력한 명령어를 해석하고 실행해 주는 프로그램이다.

 

2. Shell의 역할

  • 사용자가 입력한 명령어를 해석하고 실행하는 역할
  • 운영체제(OS)와 사용자를 연결하는 인터페이스
  • 파일 실행, 프로세스 관리, 시스템 설정들의 작업 수행

Shell의 동작 과정

  1. 사용자가 터미널에 명령어를 입력 (ls -l)
  2. Shell이 해당 명령어를 해석하고 커널에 전달
  3. 커널이 명령을 실행하고 결과를 Shell에 반환
  4. Shell이 실행 결과를 터미널에 출력

즉, Shell은 우리가 명령어를 입력하면, 이를 운영체제가 이해할 수 있도록 번역하는 역할을 함.

 

3. Shell의 종류

Shell 종류 설명 특징
Bash (기본 Shell) Bourne Again Shell 대부분의 Linux 배포판 기본 Shell
Zsh Z Shell Bash보다 강력한 기능 (Oh My Zsh 지원)
Fish Friendly Interactive Shell 초보자 친화적인 Shell
Tcsh C Shell 기반 C 언어 스타일의 Shell
Dash Debian Almquist Shell 가볍고 빠름 (Ubuntu 기본 /bin/sh)

 

4. Shell과 Terminal(터미널)의 차이

먼저 터미널을 켜주도록 하겠습니다.

 

 

이게 Shell인가요? 아닙니다. 이건 터미널입니다. 우리가 생각하는 그 터미널 맞습니다. 한글로 말하면 끝점, 종점을 말합니다.

사용자는 터미널이라는 프로그램으로 컴퓨터에 접속하고 사용하는건데, 터미널 프로그램에서 Shell이라는 프로그램을 실행시킨 것입니다. 실행 하게 되면 이런 화면이 나오게 되는데

 

 

여기서 위에서 말한 내용들을 알아볼건데, 아래의 명령어를 실행 합니다.

ps -ef

 

 

실행 하게 되면 아래와 같이 나오게 될껀데,

 

ps 명령어는 현재 실행되어 있는 프로세스의 리스트를 확인하는 명령어 입니다.

그뒤에 붙은 -ef는 옵션이라고 합니다.

 

아래의 목록을 보면

 

위에서부터 실행된 순서인데, qterminal 이라는 프로세스가 실행되고, 그 다음으로 zsh 프로세스가 실행된 것을 확인할수 있습니다.

 

root 오른쪽 숫자가 있죠? qterminal은 34950, 1이 적혀있고, zsh은 34963, 34950 이라고 적혀있습니다.

 

이 숫자들은 PID, PPID를 뜻합니다.

 

PID와 PPID란?

리눅스에는 모든 실행 중인 프로그램(프로세스)이 고유한 번호를 가지게 되는데, 이 번호를 PID(Process ID,프로세스 ID) 라고 하게 됩니다.

또한, 모든 프로세스는 부모 프로세스 (Parent Process)에서 생성되는데, 부모 프로그램의 ID를 PPID(Parent Process ID)라고 합니다. 누가 실행 시켰냐를 의미합니다.

즉, pterminal의 PID는 34950고, PPID는 1이 됩니다. 그럼 zsh의 PID는 34963, PPID 34950 이겠죠?

여기서 pterminal는 1이라는 부모 프로세스가 실행 시켜서 34950라는 ID를 받았고, zsh는 34950라는 부모 프로세스가 실행 시켜서 34963이라는 ID를 받았음을 의미합니다.

 

여기서 봐야 할것이, zsh PPID와 pterminal의 ID와 똑같죠? 이는 zsh는 pterminal가 실행시켰음을 의미합니다.

즉 알아본대로 터미널 프로그램이 실행되고, 터미널이라는 프로그램이 Shell (zsh)이라는 프로그램을 실행 시켰음을 알 수 있습니다.

 

여기까지 Shell 기본 개념에 대해서 알아 봤습니다. 다음 포스팅에서 뵙겠습니다.