• 미니쉘은 …
    • 새 명령어를 기다릴 때 prompt를 보여줘야 한다.
    • working history를 가지고 있어야 한다.
    • 올바른 실행파일을 찾아서 실행해야 한다.(PATH 변수를 기반으로 혹은 절대, 상대경로를 사용하여)
    • 전역 변수는 사용하면 안 된다.
    • 닫히지 않은 따옴표나 \나 ; 같은 문제에서 요구하지 않는 특수문자는 방해하지 않는다, 원본 쉘처럼 생각하면됨
    • '를 쓰면 인용구 안의 메타 문자들을 쉘이 해석하면 안된다.
    • "를 쓰면 $를 제외한 다른 메타 문자를 쉘이 해석하면 안된다.
    • redirection을 구현해라
      • < 는 입력을 리다이렉트 해야 한다.
      • > 는 출력을 리다이렉트 해야 한다.
      • << 는 구분 기호를 지정한 다음 다음 입력을 포함하는 줄까지 읽는다. 기록을 업데이트할 필요는 없다.
      • >> 는 출력을 append 모드로 리다이렉션한다.
    • pipe( | ) 를 구현하라. 파이프 라인 안의 각각의 명령어는 파이프로 다음 명령의 입력으로 연결된다.
    • 환경 변수를 다룰 수 있어야 한다.($ 뒤의 문자열)
    • ctrl-C ctrl-D ctrl-\\ 는 bash와 같게 행동해야 한다.
    • 상호 작용 모드
      • ctrl-C 는 새로운 줄에 새로운 프롬프트를 출력한다.
      • ctrl-D 는 쉘을 종료한다.
      • ctrl-\\ 는 아무 동작도 하지 않는다.