• 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)는 터미널 없이 백그라운드에서 실행되는 것.