이번 주는 리눅스 사용자가 시스템과 대화하는 방법, 즉 셸을 처음부터 끝까지 훑었다. 셸의 종류와 변수, 리다이렉션과 파이프, 작업 제어와 별칭, 그리고 셸 스크립트의 기초까지. 이 모든 조각은 결국 하나의 질문으로 수렴한다 — "어떻게 하면 사람이 손으로 하던 일을 셸에게 정확하고 반복 가능하게 맡길 수 있는가." 오늘은 4일간 배운 내용을 하나의 흐름으로 엮어 복습하고, 시험에 자주 나오는 핵심을 다시 짚은 뒤, 종합 문제로 마무리한다.
셸은 커널과 사용자 사이의 명령 해석기다. 종류는 본 계열(sh → ksh → bash → zsh)과 C 계열(csh → tcsh)로 나뉘고, bash가 리눅스 표준 로그인 셸이다. alias와 history를 처음 도입한 건 csh다.
변수는 두 종류다. 셸 변수는 현재 셸에서만 유효하고 자식에게 상속되지 않으며, export로 표시한 환경 변수는 자식 프로세스에게 상속된다. 상속은 부모→자식 한 방향뿐이다.
| 명령 | 보여주는 범위 |
|---|---|
set | 셸 변수 + 환경 변수 + 함수 (가장 넓음) |
env | 환경 변수만 |
export -p | export된 변수만 |
초기화 파일 읽기 순서는 셸의 종류에 따라 다르다.