본문 바로가기
C.W.K.
Stream
Lesson 01 of 10 · published

터미널, 셸, 콘솔의 차이

~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

겹쳐 쓰는 세 단어

‘터미널을 열어’라는 말은 보통 터미널 에뮬레이터를 띄우고 그 안에서 셸을 사용하라는 뜻이야. 일상에서는 터미널, 셸, 콘솔을 비슷한 말처럼 쓰지만 실제로는 한 작업 환경의 서로 다른 층이야. 셋을 구분하면 화면, 입력, 명령 해석 가운데 문제가 정확히 어느 층에 있는지 좁히기 쉬워. 같은 터미널 앱에서도 다른 셸을 시작할 수 있고, 다른 터미널 앱 두 개가 같은 셸을 실행할 수도 있어.

터미널은 화면과 입력을 맡아

터미널 에뮬레이터는 글자를 화면에 그리고 키 입력을 안쪽 프로그램에 전달하는 앱이야. ls의 뜻을 해석하거나 실행 파일을 고르지는 않아. macOS의 Terminal.app, iTerm2, Warp, Alacritty, Kitty, WezTerm과 VS Code·Cursor의 통합 터미널이 같은 역할을 해. 글꼴, 색, 복사·붙여넣기와 키 전송 설정은 이 층에서 찾아. 화면에 보이는 글자는 셸이나 그 자식 프로세스가 보낸 출력이고, 터미널은 그 내용을 그려 주는 쪽이야.

셸은 명령을 해석해

은 터미널 안에서 실행되며 입력을 명령과 인자로 나누고 $PATH에서 실행 파일을 찾아 시작해. zsh, bash, fish, nushell, PowerShell이 셸이고, macOS는 Catalina부터 새 계정의 기본 셸로 zsh를 사용해. 변수 확장, 리디렉션, 파이프라인, 별칭과 함수처럼 명령을 조립하는 규칙도 셸이 맡아. 따라서 창의 색을 바꾸는 일과 명령 문법을 바꾸는 일은 서로 다른 설정을 찾아야 해.

콘솔은 문맥에 따라 뜻이 달라져

원래 콘솔은 컴퓨터나 서버에 직접 연결된 물리 키보드와 화면을 뜻했어. macOS의 Console.app은 로그 뷰어이고, Linux의 가상 콘솔과 브라우저 개발자 도구의 JavaScript 콘솔도 서로 다른 대상이야. 누가 콘솔이라고 말하면 물리 장치, 운영체제 화면, 로그 앱, 언어 REPL 가운데 무엇을 가리키는지 확인해.

내 컴퓨터에서 구분해 보기

서로 다른 터미널 앱 두 개에서 echo $SHELL을 실행해 봐. 창은 달라도 같은 셸 경로가 나올 수 있어. 터미널 앱을 바꾸는 일과 명령을 해석하는 셸을 바꾸는 일이 서로 다른 층이라는 가장 간단한 증거야. 비교할 때는 두 앱의 창 모양이 아니라 명령이 실제로 출력한 셸 경로를 증거로 삼아.

Code

지금 어떤 셸이 도는지 확인·bash
# 터미널이 시작한 로그인 셸의 경로
echo $SHELL
# 현재 실행 중인 프로세스의 실제 셸 이름
ps -p $$
# zsh 버전
zsh --version
터미널은 그대로 두고 셸만 바꾸기·bash
# 현재 터미널 안에서 bash 시작
bash
echo $0          # 출력: bash
exit             # zsh로 돌아가기
echo $0          # 출력: -zsh

External links

Exercise

Terminal.app에서 echo $SHELLps -p $$를 실행해. 이어서 iTerm2나 다른 터미널 앱에서도 같은 명령을 실행해 출력된 셸 경로와 현재 프로세스를 비교해. 창을 그리는 앱이 달라도 같은 셸을 실행할 수 있다는 사실을 명령 출력으로 확인해.

Progress

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

댓글 3

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

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

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

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

  2. EC
    Erik Choi

    PS C:\Users\User> (get-process -id $pid).path C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe PS C:\Users\User> cmd Microsoft Windows [Version 10.0.19045.6466] (c) Microsoft Corporation. All rights reserved.

    C:\Users\User>echo %comspec% C:\WINDOWS\system32\cmd.exe

    C:\Users\User> (get-process -id $pid).path .path은(는) 예상되지 않았습니다.

    C:\Users\User>exit PS C:\Users\User> (get-process -id $pid).path C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe PS C:\Users\User>

    윈도우 파워쉘에서 cmd를 불러온 뒤 프로세스 호출해보고, 다시 파워쉘로 돌아와서 호출해봤어. 둘의 언어가 다르다는걸 알게되었습니다.