02. 터미널과 쉘 (창문과 비서)
"검은 화면은 무서운 게 아닙니다. 지배인(OS)과 대화하는 직통 전화입니다."
1. 터미널 vs 쉘
사람들은 흔히 "터미널 켜", "쉘 켜"를 혼용해서 쓰지만, 엄밀히는 다릅니다.
- 터미널 (Terminal): 우리 눈에 보이는 창(Window)입니다. (입출력 도구)
- 쉘 (Shell): 우리가 친 글자를 해석해서 OS에게 전달하는 비서(Program)입니다.
- 윈도우:
cmd,PowerShell - 맥/리눅스:
zsh,bash
- 윈도우:
우리가 터미널에 python이라고 치고 엔터를 누르면?
1. 터미널이 키보드 입력을 받아서 쉘에게 전달합니다.
2. 쉘은 "python? 아, 그 프로그램 실행하라는 거구나"라고 해석합니다.
3. 쉘이 OS에게 "야, python 실행 파일 찾아서 메모리에 올려줘"라고 요청합니다.
4. OS가 python.exe를 실행합니다.
잠깐, 실행 파일은 .exe인데 왜 그냥 python이라고 치나요?
윈도우의 똑똑한 습관(PATHEXT) 덕분입니다!
윈도우는 명령어가 입력되면 뒤에 .exe, .bat, .com 등을 알아서 붙여보며 파일을 찾습니다.
所以 python.exe라고 다 치지 않고 python만 쳐도 찰떡같이 알아듣는 것입니다.
[실습] 터미널과 인사하기
백문이 불여일타! 터미널을 열고 직접 명령을 내려봅시다.
0. 터미널 열기
- 윈도우:
시작키 ->PowerShell검색 -> 실행 - 맥:
Command + Space(Spotlight) ->Terminal검색 -> 실행
1. "여기가 어디야?" (현재 위치 확인)
2. "뭐가 있어?" (파일 목록 보기)
3. "청소해 줘!" (화면 지우기)
2. 명령어의 정체
우리가 터미널에서 치는 명령어들 (ls, cd, mkdir, python, pip...)은 마법의 주문이 아닙니다.
컴퓨터 어딘가에 저장된 실행 파일들 (.exe)입니다.
ls(List): 파일 목록 보여주는 프로그램python: 파이썬 인터프리터 프로그램pip: 파이썬 패키지 관리 프로그램
3. PATH (환경 변수)
그런데 우리는 python.exe가 어디 있는지(C:\Python39\python.exe) 정확한 경로를 입력하지 않고,
그냥 python만 쳐도 실행이 됩니다. 어떻게 된 걸까요?
비서(쉘)가 "자주 쓰는 실행 파일들을 모아둔 폴더 목록(PATH)"을 미리 외우고 있기 때문입니다.
- 사용자가
python입력 - 쉘은
PATH목록에 있는 폴더들을 순서대로 뒤집니다. - "어! 여기
python파일 찾았어요!" -> 실행
Command Not Found 에러
'python'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램...이 아닙니다.
이 에러는 "PATH 목록을 다 뒤져봤는데 그런 파일 없는데요?" 라는 뜻입니다. 파이썬을 설치했는데도 이 에러가 뜬다면, 설치할 때 [x] Add Python to PATH 체크박스를 껐기 때문일 확률이 99%입니다.