콘텐츠로 이동

02. 터미널과 쉘 (창문과 비서)

"검은 화면은 무서운 게 아닙니다. 지배인(OS)과 대화하는 직통 전화입니다."

1. 터미널 vs 쉘

사람들은 흔히 "터미널 켜", "쉘 켜"를 혼용해서 쓰지만, 엄밀히는 다릅니다.

  • 터미널 (Terminal): 우리 눈에 보이는 창(Window)입니다. (입출력 도구)
  • 쉘 (Shell): 우리가 친 글자를 해석해서 OS에게 전달하는 비서(Program)입니다.
    • 윈도우: cmd, PowerShell
    • 맥/리눅스: zsh, bash

우리가 터미널에 python이라고 치고 엔터를 누르면? 1. 터미널이 키보드 입력을 받아서 에게 전달합니다. 2. 은 "python? 아, 그 프로그램 실행하라는 거구나"라고 해석합니다. 3. OS에게 "야, python 실행 파일 찾아서 메모리에 올려줘"라고 요청합니다. 4. OSpython.exe를 실행합니다.

잠깐, 실행 파일은 .exe인데 왜 그냥 python이라고 치나요?

윈도우의 똑똑한 습관(PATHEXT) 덕분입니다! 윈도우는 명령어가 입력되면 뒤에 .exe, .bat, .com 등을 알아서 붙여보며 파일을 찾습니다. 所以 python.exe라고 다 치지 않고 python만 쳐도 찰떡같이 알아듣는 것입니다.

[실습] 터미널과 인사하기

백문이 불여일타! 터미널을 열고 직접 명령을 내려봅시다.

0. 터미널 열기

  • 윈도우: 시작 키 -> PowerShell 검색 -> 실행
  • : Command + Space (Spotlight) -> Terminal 검색 -> 실행

1. "여기가 어디야?" (현재 위치 확인)

# 맥/리눅스
pwd

# 윈도우 (PowerShell)
pwd
# 윈도우 (CMD)
cd

2. "뭐가 있어?" (파일 목록 보기)

# 맥/리눅스
ls

# 윈도우 (PowerShell/CMD)
dir
# (PowerShell은 'ls'라고 쳐도 알아듣습니다. 별명(Alias)을 지어놨거든요.)

3. "청소해 줘!" (화면 지우기)

# 맥/리눅스
clear

# 윈도우 (PowerShell/CMD)
cls

2. 명령어의 정체

우리가 터미널에서 치는 명령어들 (ls, cd, mkdir, python, pip...)은 마법의 주문이 아닙니다. 컴퓨터 어딘가에 저장된 실행 파일들 (.exe)입니다.

  • ls (List): 파일 목록 보여주는 프로그램
  • python: 파이썬 인터프리터 프로그램
  • pip: 파이썬 패키지 관리 프로그램

3. PATH (환경 변수)

그런데 우리는 python.exe가 어디 있는지(C:\Python39\python.exe) 정확한 경로를 입력하지 않고, 그냥 python만 쳐도 실행이 됩니다. 어떻게 된 걸까요?

비서(쉘)가 "자주 쓰는 실행 파일들을 모아둔 폴더 목록(PATH)"을 미리 외우고 있기 때문입니다.

  1. 사용자가 python 입력
  2. 쉘은 PATH 목록에 있는 폴더들을 순서대로 뒤집니다.
  3. "어! 여기 python 파일 찾았어요!" -> 실행

Command Not Found 에러

'python'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램...이 아닙니다.

이 에러는 "PATH 목록을 다 뒤져봤는데 그런 파일 없는데요?" 라는 뜻입니다. 파이썬을 설치했는데도 이 에러가 뜬다면, 설치할 때 [x] Add Python to PATH 체크박스를 껐기 때문일 확률이 99%입니다.