C로 구현한 경량 Bash 유사 셸입니다.
이 프로젝트는 유닉스 셸의 핵심 기능(명령어 파싱, 실행, 파이프라인, 환경 변수 처리 등)을 재현하는 것을 목표로 합니다.
MiniShell은 Bash의 주요 동작 방식을 모방한 사용자 정의 셸 프로그램입니다.
프로세스 제어, 명령어 파싱, 빌트인 명령 처리 등 시스템 프로그래밍 전반을 다룹니다.
현재 macOS에서 빌드 및 동작합니다.
-
프롬프트 & 명령어 입력
- 대기 상태에서 프롬프트 표시
- 명령어 히스토리 관리
-
명령어 실행
$PATH기반, 상대 경로, 절대 경로 실행 지원- 닫히지 않은 따옴표(
',")가 있을 경우 실행하지 않음 \(백슬래시) 또는;(세미콜론) 같은 비지원 메타문자는 무시
-
따옴표 처리 규칙
- 작은따옴표
'...': 모든 메타문자 해석 차단 - 큰따옴표
"...":$(변수 치환)만 허용하고 나머지 메타문자 해석 차단
- 작은따옴표
-
파이프라인
- 파이프(
|) 지원: 한 명령의 출력을 다음 명령의 입력으로 연결
- 파이프(
-
리다이렉션
- 출력 리다이렉션:
>(덮어쓰기),>>(추가) - 입력 리다이렉션:
<(파일 입력),<<(Here-document)
- 출력 리다이렉션:
-
환경 변수
$변수명형태의 환경 변수 값 확장$?로 마지막 명령의 종료 상태 코드 참조 가능
-
시그널 처리
Ctrl-C: 현재 프로세스 중단(SIGINT)Ctrl-D: EOF로 셸 종료Ctrl-\: 현재 프로세스 종료(SIGQUIT), Bash와 동일한 동작
-
명령어
cd— 디렉토리 변경echo— 인자 출력env— 환경 변수 출력exit— 셸 종료export— 환경 변수 설정pwd— 현재 작업 디렉토리 출력unset— 환경 변수 제거ls— 파일 출력
# 프로젝트 빌드 (빌드 환경: INTEL MAC OS)
make
# 셸 실행
./minishell