כיצד פועל PATH ב- Bash

How Does Path Work Bash



כאשר אתה מקליד פקודה במסוף לינוקס, אתה בדרך כלל מתקשר לתוכנית לביצוע עבודה מסוימת, למשל, ls , CD , rm , mkdir , וכו 'כל התוכניות האלה ממוקמות איפשהו במערכת הקבצים, נכון? איך באש יודע היכן התוכניות האלה נמצאות?

כאן נכנסים לשחק משתני הסביבה, במיוחד המשתנה PATH. משתנה זה אחראי לספר לאן היכן לחפש את התוכניות האלה. בואו לבדוק כיצד פועל PATH וכיצד ניתן לצפות/לשנות PATH.







משתנה סביבתי ו- $ PATH

במינוח הקליפה, הסביבה היא אזור שהקליפה בונה בכל פעם שהיא מתחילה הפעלה. כדי לנהל את הסביבה, ישנם משתני סביבה המציינים חלקים שונים של הסביבה. ערך המשתנה יכול להיות מחרוזת, מיקום ספרייה, ערך או אחרים.



PATH הוא משתנה סביבה שכזה שעוקב אחר ספריות מסוימות. כברירת מחדל, משתנה PATH מכיל את המיקומים הבאים.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /am
  • /sbin
  • /snap/bin (אם Snap מותקן)

רוצה לראות אילו ספריות רשומות כרגע תחת PATH? הפעל מסוף והפעל את הפקודה הבאה.





$זרק $ PATH

כאן, סימן $ הוא לציון משתנה. ה זרק הפקודה מדפיסה את הערך של המשתנה PATH.



עכשיו, מדוע משתנה הסביבה הספציפי הזה כל כך חשוב? זה בגלל איך פגז והמערכת כולה מתייחסים לזה. משתנה PATH מאחסן היכן ניתן למצוא הפעלות. בכל פעם שהופעלה פקודה כלשהי, הקליפה מחפשת את ספריות PATH אחר קובץ ההפעלה למטרה ומריצה אותו.

לדוגמה, בואו נבדוק עם זרק פקודה. הנה, אני מפעיל פקודת הד.

$זרקשלום עולם!

היכן נמצא קובץ ההפעלה של זרק ? הפעל את הפקודה הבאה כדי לגלות.

$איזה זרק

כפי שאנו יכולים לראות, ה זרק ההפעלה נמצאת ב/usr/bin/echo. היכן ממוקם? בוא נגלה.

$איזה איזה

הוא ממוקם גם ב-/usr/bin/which. רוב כלי הפקודה ממוקמים מתחת לספרייה /usr /bin. כאן, bash מתייעץ עם PATH לגבי המיקומים לחיפוש הפעלה (ים) של פקודה.

שינוי PATH

לפני שנשנה את הערך של PATH, חשוב להבין את המבנה שלו. הפעל את הפקודה שוב כדי לבדוק את הערך של PATH.

$זרק $ PATH

שימו לב שכל אחת מהספריות מופרדת בסימן:.

הוספת ספרייה ל- PATH

כדי להוסיף ספרייה מותאמת אישית ל- PATH, אנו נעזר בקובץ bashrc. זהו סקריפט מיוחד של bash הנטען בכל פעם שמתחילה הפעלת bash חדשה. שים לב שקובץ bashrc ייחודי לכל משתמש במערכת לינוקס.

פתח את קובץ bashrc בעורך טקסט. אם קובץ bashrc אינו קיים עדיין, העורך ייצור אותו באופן אוטומטי.

$באתי~/.bashrc

כאן, זה ה- bashrc המוגדר כברירת מחדל שמגיע עם אובונטו. עבור אל הקובץ האחרון (אם קיים) והוסף את השורה הבאה.

$יְצוּא נָתִיב='$ PATH: / '

כאן, הערך החדש של משתנה PATH יהיה המשתנה הישן יחד עם הספרייה החדשה שהוספנו זה עתה.

שמור את הקובץ וספר ל- bash לטעון אותו מחדש.

$מָקוֹר~/.bashrc

בוא נוודא אם הנתיב החדש נוסף בהצלחה.

$זרק $ PATH

וואלה! PATH עודכן בהצלחה! כעת, bash יחפש בנתיב החדש גם אתרי הפעלה. יש לי כבר תסריט demo.sh על שולחן העבודה. בואו נראה אם ​​bash יכול לקרוא לזה מבלי לציין את המיקום המדויק.

$demo.sh

כן, bash יכול לקרוא לזה ישירות בלי שום בעיה.

הסרת הספרייה מ- PATH

אין דרך פשוטה להוסיף/להסיר ספריות מ- PATH. הרשה לי להסביר.

הערך של PATH קבוע למעשה. ואז, מה עם הטריק bashrc? Bashrc הוא סקריפט bash שנטען bash בכל פעם שהוא מתחיל הפעלה. ב- bashrc, הכרזנו רק שהערך החדש של PATH יהיה ערך ברירת המחדל שלו והספרייה שהוגדרה על ידי המשתמש. עכשיו, בכל פעם ש- bash נטען, הוא רואה ש- bashrc אומר להקצות ערך חדש של PATH וזה מה שהוא עושה.

באופן דומה, אם ברצוננו להסיר ספרייה מ- PATH, עלינו להקצות מחדש ערך אחר של PATH ב- bashrc, כך שבכל פעם שה- bash יתחיל, הוא משתמש בערך המשתנה.

בואו נסתכל על הדוגמה הזו. אני מוכן להסיר את הספרייה ~/שולחן עבודה מה- PATH.

$זרק $ PATH | sed 's/: ~ /שולחן עבודה $ //'

אם הספרייה תהיה/home/wrong/dir, הפקודה תיראה כך.

$זרק $ PATH | sed 's/: /home /wrong /dir $ //'

כאן, החלק המעניין הוא הכלי sed. למידע נוסף על sed פה ו פה . סיפור ארוך קצר, באמצעות sed, אנו משנים את תפוקת ה- זרק פקודה. כעת, אנו יכולים להשתמש בפלט שונה זה כדי לשנות את הערך של PATH.

פתח את bashrc בעורך טקסט והוסף את השורות הבאות. אני שומר בכוונה את השורות הקודמות כדי להוכיח שזה עובד.

$יְצוּא נָתִיב='$ (הד $ PATH | sed -e's/: ~ /Desktop $ // ')'

לחלופין, ניתן גם להגדיר באופן ידני את הערך של PATH. זהו תהליך עמל אך פשוט יותר ופשוט יותר.

$יְצוּא נָתִיב=/usr/מְקוֹמִי/sbin:/usr/מְקוֹמִי/am:/usr/sbin:/usr/am:/sbin:/am:
/usr/משחקים:/usr/מְקוֹמִי/משחקים:/לְצַלֵם/אני

כאן, ערך הפקודה יוקצה ל- PATH. שמור את הקובץ וטען מחדש את bashrc.

$מָקוֹר~/.bashrc

בואו לאמת את התוצאה.

$זרק $ PATH

ערך ה- PATH מתעדכן!

מחשבות אחרונות

בבסיס, משתנה PATH הוא משתנה חשוב. כל תוכנית שעוברת בפגישת bash יורשת את המשתנה, ולכן חשוב ש- PATH יכלול את הספריות הדרושות בלבד. הוספת ספרייה נוספת רק תוסיף יתירות למערכת.

כדי לראות את כל משתני הסביבה עבור bash, הפעל פקודה זו. חלק הפקודה הראשון יחזיר את כל משתני הסביבה והחלק השני ימיין את הפלט בסדר עולה.

$env | סוג

רוצה לתבל את חווית הבש שלך? כינויי Bash מציעים דרך ייחודית להאיץ ולתבל דברים. למידע נוסף על כינויים bash .

תהנה!