![Screen Shot 2024-03-05 at 9 11 07 PM](https://private-user-images.githubusercontent.com/104954561/310114481-b9058650-6015-470f-a644-3b4bb118b518.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTE0NDgxLWI5MDU4NjUwLTYwMTUtNDcwZi1hNjQ0LTNiNGJiMTE4YjUxOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yM2NhNTdlOTkzZTI5ZWU2YzdiN2MxODc1MGRjMjUyOGY5YmU3ZWI0NGQ5MDczZGMxZmY2M2U0NjExOWViNDMwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.4FPTQRwONQVw2IvFv8hBrKLPtuRyA_Kd56CvdFQhUhc)
- Bash Manual을 참고하여 쉘을 구현한다
- Recursive descent parser
- Inter Process Communication
- 기본적인 쉘 기능
- Built-in 명령어
- 환경변수
- 상대경로, 절대경로
- 파이프
- 리다이렉션
- 시그널
![](https://private-user-images.githubusercontent.com/104954561/310110829-f337961f-795c-4b76-9bca-a2dadda1720c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTEwODI5LWYzMzc5NjFmLTc5NWMtNGI3Ni05YmNhLWEyZGFkZGExNzIwYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MjU1ZGMyMTBkZGJkMzQ3ZDUxMTkxMThmZGU2MWI2OTY1ZTc2YTI5NDliZWVhMWNjOGM4ZTA4NGY3Y2Y1YzhlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.MepTuGA-n7besA48z6sVcoZUN3b0FjgBJxBVD4GNvxc)
- <pipe> ::= <group> “ | ” <group> | <group> “|” <pipe>
- <group> ::= <cmd> | <redir> <cmd>
- <cmd> ::= <ex_cmd> | <cmd> <option>
- <redir> ::= <redirection> | <redir> <redirection>
- <redirection> ::= “<” <file> | “>” <file> | “>>” <file> | “<<” <limiter>
![Screen Shot 2024-03-05 at 9 26 46 PM](https://private-user-images.githubusercontent.com/104954561/310119532-2168046a-1e0a-4f72-b6b5-8b1f30d0cf13.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTE5NTMyLTIxNjgwNDZhLTFlMGEtNGY3Mi1iNmI1LThiMWYzMGQwY2YxMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mN2M3NGU1NDc1NWNjOTA5YmU0ODQ0NTNmNjQ5MTk5MDViNzRhZDIzZTc2MTQ5NWJjMTViNGIwNTE3NTdkOWE5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.VNymlJ7V04sFYWAq4B7AVZffx6BMbLfYyB_bPfjs_zI)
![Screen Shot 2024-03-05 at 9 25 37 PM](https://private-user-images.githubusercontent.com/104954561/310119537-10ecc07c-8319-4863-b292-f970b25f495d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTE5NTM3LTEwZWNjMDdjLTgzMTktNDg2My1iMjkyLWY5NzBiMjVmNDk1ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03NmUyN2QyYmFkNzg3MDc3ZjcyMDhkMmU3NjFjODk4NzE4ODVhYzA0NWYwNjcyYjRiMDgxNzE0ZDdlMTgwMzQyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.TrUkL014W7cWKPEXuudSBGDzvs6W0r1Aa9wPT4ammLQ)
![Screen Shot 2024-03-05 at 9 23 25 PM](https://private-user-images.githubusercontent.com/104954561/310119538-f7d056e1-e1c5-4d2f-9c41-1ed2cb80c2fa.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTE5NTM4LWY3ZDA1NmUxLWUxYzUtNGQyZi05YzQxLTFlZDJjYjgwYzJmYS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hNjI2MGQ4M2ViMWFmNDVjZmE5NzAxMzk5Mzk2NjMzYzU0NjFiMjQwNDlmYjdiMjM5YjJjYjYyYTQ3OTc0ZjI5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.a0gk9op00YvIlUQfLtL6fAYPJ3XCFQnArRupMCDV3GY)
env
환경 변수 목록을 출력export
환경변수를 설정하거나 환경변수 목록을 출력unset
환경변수를 삭제pwd
현재 디렉토리 출력cd
디렉토리 변경exit
쉘 종료 (파이프 제외)echo - n
문자열 출력, n옵션은 줄바꿈을 하지 않음git clone
make
./minishell
![Screen Shot 2024-03-05 at 9 05 43 PM](https://private-user-images.githubusercontent.com/104954561/310113367-d8081710-e28f-4756-9709-d70d2198dcf3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTEzMzY3LWQ4MDgxNzEwLWUyOGYtNDc1Ni05NzA5LWQ3MGQyMTk4ZGNmMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02ZDYxZGJkMWU0MTVhMTllYzU5ZDgyOGE4M2ExNzEwZDgxMzhkYTUyZTEyM2Y0ODRkM2NjNzczMGE0OGMxNzFjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.MX4Kv6NE6kYj5_rPQu2re1p9aJMKvAzya9A6mcq_Xuo)
![Screen Shot 2024-03-05 at 9 05 17 PM](https://private-user-images.githubusercontent.com/104954561/310113381-588043bf-f975-45d0-b70d-233e641ad53c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTEzMzgxLTU4ODA0M2JmLWY5NzUtNDVkMC1iNzBkLTIzM2U2NDFhZDUzYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wZGUzNThkY2ZmZjFjZWViN2Y2MGQ1ZmNmNTI4ZGMzMTM5NDBjZDdiNDY2MDNiODZhMzUwNGM0NDlmZmJkMzQyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.DUZojpdZoGIfQ1Wu0hNivltuXEOpYX-0qdGsnxJwI5c)
![Screen Shot 2024-03-05 at 9 06 55 PM](https://private-user-images.githubusercontent.com/104954561/310113406-8f23e286-743d-491d-9f9d-d68ce8ece992.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTEzNDA2LThmMjNlMjg2LTc0M2QtNDkxZC05ZjlkLWQ2OGNlOGVjZTk5Mi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yOTY5Mzk5NDZmODkzMjM2OTk3OTIzMWQwZDE1ZmQ0N2RjYWFlZjI0MGYxNzNhNGY5ZGIyYTZhZDQxY2E2NzA2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.1J5SQtwaJz-NsmyIk7-7aHVcbM_pd9eLBbwGSyh6JXE)
![Screen Shot 2024-03-05 at 9 06 12 PM](https://private-user-images.githubusercontent.com/104954561/310113436-5cb72e6b-e993-4c88-b17d-965f9e7c43ab.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAwMjA4ODcsIm5iZiI6MTcyMDAyMDU4NywicGF0aCI6Ii8xMDQ5NTQ1NjEvMzEwMTEzNDM2LTVjYjcyZTZiLWU5OTMtNGM4OC1iMTdkLTk2NWY5ZTdjNDNhYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzAzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcwM1QxNTI5NDdaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lZDc2YWYxZjM5MmZiZWFhNmM2ZTUwNDZkZmRjNDUxNWIyZjg5MDJlYWEzZmIyZWJjYjljNDA2MGM2YjI3MTU0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.oU4rf9P1Vfyf7S3mAcyrN1O-APfMLdEp-6799LwTiSk)