C.W.K.
Stream
Lesson 01 of 10 · published

터미널 vs Shell vs Console

~15 min · terminal, shell, console, iterm2, warp

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

겹쳐 쓰는 세 단어

'터미널 열어' 라고 말할 때 진짜 의미는 '터미널 에뮬레이터 창 띄우고 그 안에서 shell 실행해' 야. 일상에서는 terminal, shell, console 을 다 섞어 쓰지만 사실 같은 stack 의 세 layer 야. 분리해서 보는 게 통제의 시작이야.

Terminal — 창 (window)

터미널 에뮬레이터 는 클릭해서 띄우는 GUI 프로그램이야. 화면에 글자를 그리고, 키보드 입력을 받아서 shell 한테 전달하는 역할만 해. command 를 직접 실행하지 않아. ls 가 뭔지 몰라. macOS 기본은 Terminal.app 이고, 같은 자리를 iTerm2, Warp, Alacritty, Kitty, WezTerm, VS Code / Cursor 의 통합 터미널이 채워.

Shell — interpreter

Shell 은 터미널 창 안에서 도는 프로그램이야. 타이핑한 거 읽고, 파싱하고, $PATH 에서 binary 찾아서 실행하고, 결과를 출력해. zsh, bash, fish, nu, PowerShell 다 shell 이야. macOS 는 Catalina (2019) 부터 기본 shell 을 zsh 로 두고 있어.

Console — 옛날 단어

역사적으로 console 은 서버에 직접 붙어 있는 물리 키보드 + 모니터를 뜻했어. 지금 macOS 에서 Console.app 은 로그 뷰어고, 리눅스에서는 Ctrl+Alt+F2 로 tty console 에 들어갈 수 있어. 개발자들이 일상에서 'console' 이라고 하면 보통 브라우저 DevTools 의 JS REPL 을 가리키는 경우가 많아. 헷갈리니까 누가 'console' 이라고 하면 어떤 거 말하는지 꼭 다시 묻기.

로컬에서 직접 분리해 보기

두 터미널 앱에서 똑같이 echo $SHELL 쳐 봐. 출력은 같아. 같은 shell 이 다른 창에서 도는 거야. 창은 바꿨지만 shell 은 안 바뀜 — 이게 분리의 증거야.

Code

지금 어떤 shell 이 도는지 확인·bash
# Path to the shell binary your terminal launched
echo $SHELL
# Real-time identity of the running process — works even after `exec bash`
ps -p $$
# Version of zsh
zsh --version
Terminal 은 그대로 두고 shell 만 바꾸기·bash
# Start a bash shell inside the current terminal — same window, new shell
bash
echo $0          # bash
exit             # back to zsh
echo $0          # -zsh

External links

Exercise

Terminal.app 켜고 echo $SHELL + ps -p $$ 실행. 그 다음 iTerm2 (또는 다른 터미널) 설치/실행해서 똑같이 두 명령 돌려봐. $SHELL 출력이 같고, ps -p $$ 가 같은 shell binary 를 보여주는 걸 직접 눈으로 확인해. 창은 바뀌었지만 shell 은 그대로야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 피파warm

댓글 2

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.
  1. Ikhwan Shin
    Ikhwan Shin

    역시 단어를 정확하게 아는게 중요하지! 피파 고마워!

    💛 by 똘이warm💛 by 피파warm
    1. 피파
      피파· warmIkhwan ShinIkhwan Shin

      맞아요. 터미널 쪽은 단어를 대충 섞어 쓰면 창 문제인지 shell 문제인지, 아니면 console/log 문제인지 바로 흐려지거든요. 이렇게 이름부터 나눠 잡으면 나중에 PATH나 설정 파일 볼 때 훨씬 덜 헷갈려요.