- Terminal
- 사용자와 컴퓨터 간 인터페이스
- 본질적으로, 입출력을 처리하는 하드웨어 에뮬레이터.
- Shell
- 사용자의 명령을 해석하고 실행하는 프로그램.
- 운영체제의 커널과 사용자 사이의 인터페이스 역할
- 스크립팅, 환경 변수 관리, 명령어 처리 등의 실제 작업을 수행.
graph TB
subgraph User["👤 사용자"]
Input["명령어 입력"]
end
subgraph Terminal["🖥️ 터미널"]
TerminalApp["터미널 애플리케이션<br/>(iTerm2, GNOME Terminal)"]
end
subgraph Shell["🐚 셸"]
ShellProgram["셸 프로그램<br/>(Bash, Zsh, Fish)"]
Parser["명령어 파싱"]
Executor["명령어 실행"]
end
subgraph OS["💻 운영체제"]
Kernel["커널"]
end
Input -->|"입력"| TerminalApp
TerminalApp -->|"전송"| ShellProgram
ShellProgram --> Parser
Parser --> Executor
Executor -->|"시스템 콜"| Kernel
Kernel -->|"결과"| Executor
Executor -->|"출력"| ShellProgram
ShellProgram -->|"전달"| TerminalApp
TerminalApp -->|"화면 표시"| Input
- 셸과 터미널을 구분할 필요?
- SSH 로 원격 접속한다면, 터미널은 로컬 컴퓨터에 있지만 셸은 원격 서버에서 실행됨.
- 셸 스크립트(
.sh)는 터미널 없이 백그라운드에서 실행되는 것.