מדריך שורת הפקודה - משתני סביבה

חלק שלישי למדריך שורת הפקודה

Authors
  • Name
    YossiZ
    Published on
    Twitter

משתני סביבה

מה זה "משתנה"?

משתנה הוא כל דבר מוגדר - בעל ערך משתנה... משתנה יש לו שם, וערך שניתן לשנות. למשל, אני רוצה לכתוב פקודה שיקפיץ הודעה שיגיד שלום למישהו. אני יכול לכתוב פקודה שונה לכל אחד שאי פעם ארצה להגיד לו שלום:

msg yossi שלום Yossi!
msg yossi שלום Dovid!
....
....

(הפקודה msg מקבל 2 פרמטרים: שם המשתמש שיראה את ההודעה, ותוכן ההודעה. שם המשתמש במקרה זו הוא yossi והתוכן הוא "שלום פלוני!")

או אני יכול לכתוב את הפקודה פעם אחת עם משתנים, שם ה"משתנה" הוא רק עוגן, וה-shell ממלא בכל פעם את הערך של המשתנה בזמן הרצה.

(משתנים ב-CMD כותבים מוקפים ב-%-ים. התו % הוא תו מיוחד רק במקרה שהוא מקיף משתנה שקיים במערכת. כדי לכתוב % בלי שיתורגם כתו מיוחד כותבים ^%. (דרך אגב, טכניקה זו לכתוב תו לפני תו מיוחד כדי שלא יתורגם בצורה מיוחדת, נקרא escaping - מילוט) אין צורך (וגם לא יעזור) לעשות מילוט ל-% הראשון אלא לשני.)

למשל אכתוב:

msg %username% שלום %ploni%!

עכשיו ה-shell יבדוק עם יש משתנה מוגדר בשם "USERNAME", ותמיד יש כזה כי זה משתנה שמוגדר אוטומטי ע"י המערכת, וערכו הוא שם המשתמש הפעיל - בדוגמא שלנו "yossi". ה-shell ימחוק את השם של המשתנה ובמקום זה ימלא את הערך "yossi".

עכשיו ה-shell יעבור לבדוק עם יש משתנה בשם PLONI. מכיון שאין, נצטרך להגדיר אחד כזה. ב-CMD עושים את זה כך:

set PLONI=Dovid

אם עכשיו נריץ את הפקודה - התוצאה:

1548248884107-48a83b44-f3e1-4612-93fc-2f8601cef566-image.png

משתני סביבה

משתנה שמוגדר כ"משתנה סביבה" הוא משתנה ששייך לתהליך וכל התהליכים הבנים יקבלו אותו בירושה מהאבא. ב-CMD, כל המשתנים הם משתני סביבה. אם תגדיר משתנה, ואז תריץ פקודה - המשתנה יהיה מוגדר גם בתהליך של הפקודה שרצה. ב-bash יש 2 סוגים, משתנה רגיל, ומשתנה סביבה.

אפשר לראות (וגם לערוך) משתני סביבה של תהליך בתוכנת Process Hacker

1548249370382-a42ea64d-b4ec-4e46-83a5-9a67dbdd46e6-image.png

אפשר לראות משתני הסביבה של תהליך CMD ע"י הפקודה set בלי פרמטרים.

קראת? יש לך שאלה? השגה? רעיון לשיפור? אשמח אם תכתוב כאן בתגובות