Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

201 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniShell

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

About

mini-shell program

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages