יום רביעי, 28 בדצמבר 2022

כתיבת shell בפייתון

התחלתי לעבוד על shell שאני כותב בפייתון, המטרה העיקרית היא ללמוד מה הקשיים בכתיבת shell. על הדרך אני מגלה דברים שלא ידעתי או לא זכרתי (למשל הפקודה cd היא חלק מה shell).
אין שום סיבה להמציא כאן את הגלגל מחדש חוץ ממטרה לימודית. אני עדיין ממליץ לכולם על oh-my-zsh המצוין.


הקוד זמין כאן: https://github.com/barakbl/psh


יש עוד המון עבודה (חלק מתועד ב README). 

בכמה מילים איך זה עובד? אז ה shell תמיד כולל פרומט שמצפה להקלדת פקודה שאותה הוא יריץ. 
נקודת ההתחלה ברמה הכי בסיסית היא לולאה אינסופית (while True במקרה של פייתון) שבתחילתה יש הצגה של ה prompt וקליטה של התווים שהמשתמש מזין. לאחר הקשה על אנטר ה shell מנסה להריץ את הפקודה. ראשית הוא בודק אם זו פקודה של ה shell עצמו ובמקרה הזה היא ממומשת בקוד של ה shell כלומר במקרה שלנו כפונקציה של פייתון, אחרת ה shell שולח אותה להרצה כפקודה של מערכת ההפעלה.
בגלל שאנחנו בלולאה אינסופית בסוף כל הרצה כזו מוצג שוב הפרומפט להקלדת הפקודה הבאה.

ה shell צריך לממש כתיבה/הצגה של משתני הסביבה (במקרה שלנו הפונקציה/פקודה env), לתמוך ביציאה (הפקודה exit), בפקודה של שינוי תקיה (cd) ורצוי גם עם תמיכה ב - כפרמטר שאומר לחזור לתקיה הקודמת.

אין תגובות:

הוסף רשומת תגובה