Skip to content
yoshin edited this page Apr 18, 2026 · 3 revisions

minishell 학습 위키

42 minishell 프로젝트를 수행하기 위해 필요한 시스템 프로그래밍 지식과 셸 내부 동작 원리를 정리한 학습 문서입니다. 서브젝트 v10.0(minish.md)을 기준으로 하며, 주요 개념·알고리즘을 기초부터 서술합니다.

학습 순서

아래 순서대로 읽으면 무리 없이 따라올 수 있도록 설계되었습니다. 이미 알고 있는 주제는 건너뛰어도 됩니다.

1부. 프로젝트 개요

셸이 요구하는 기능 범위, 금지 사항, 허용 함수 목록을 먼저 파악합니다.

2부. 시스템 프로그래밍 기초

셸을 만들려면 유닉스의 "프로세스·파일·시그널" 모델을 이해해야 합니다. 이 부분이 가장 중요하고 분량이 많습니다.

3부. 입력 파싱

사용자가 입력한 문자열을 어떻게 토큰·구문 트리로 바꾸고, 변수·인용을 어떻게 처리하는가.

4부. 명령어 실행

파싱된 결과를 실제로 실행하는 단계. 리다이렉션과 파이프라인이 가장 까다롭습니다.

5부. 부록

읽는 팁

  • 각 페이지는 개념 → 시스템 콜/API → 예제 코드 → 자주 하는 실수 순으로 구성됩니다.
  • 예제 코드는 개념 설명이 목적이므로 42 Norm을 의도적으로 따르지 않는 경우가 있습니다(예: for 루프, 함수 길이 제한 초과 등).
  • 모르는 시스템 콜이 나오면 로컬에서 man 2 fork, man 3 readline처럼 매뉴얼을 함께 참고하세요.

이 위키의 적용 범위

이 문서는 학습용 레퍼런스입니다. 특정 구현체가 아닌, 셸을 직접 만들 때 알아야 할 베스트 프랙티스와 보편적 패턴을 정리한 것입니다. 개념·알고리즘의 이해가 목적이므로, 실제 구현 시에는 42 Norm·서브젝트 요구사항에 맞춰 문법적 조정이 필요합니다.

Clone this wiki locally