משתני סביבה
מתוך הויקי של ג'נטו.
אנא בצע ויקיזציה למאמר זה, ולאחר מכן הסר את התבנית {{ויקיזציה}} מהמאמר.
לקוח מתוך Configuring Gentoo/Environment Variables, תורגם על ידי Oldie.
תוכן העניינים |
[עריכה] משתני סביבה
[עריכה] משתנה סביבה?
[עריכה] מה הם
משתנה סביבה הינו עצם בעל שם המכיל מידע המשמש ישום אחד או יותר. משתמשים רבים (ובמיוחד אלו החדשים בלינוקס) מוצאים זאת מוזר במקצת או בלתי ניתן לניהול. אולם, זוהי שגיאה. על ידי שימוש במשתני סביבה המשתמש יכול בקלות לשנות תצורה לישום אחד או יותר.
[עריכה] דוגמאות חשובות
הטבלה הבאה מראה מספר משתנים הנמצאים בשימוש מערכת לינוקס, ומסבירה את תפקידם. דוגמאות לערכי משתנים מובאות לאחר הטבלה.
| משתנה | תיאור |
|---|---|
| PATH | משתנה זה מכיל רשימה של תיקיות המופרדות ביניהן על ידי פסיק. המערכת תחפש בתיקיות אלו אחר קבצים להרצה. אם הקלדת שם של תוכנית (כגון ls, rc-update או emerge) אבל התוכנית אינה נמצאת ברשימת התיקיות, מערכת ההפעלה לא תפעיל את התוכנית (אלה אם הכנסת נתיב מלא לתוכנית כגון bin/ls/ ) |
| ROOTPATH | למשתנה זה תפקיד זהה ל PATH, בהבדל שרשימת התיקיות שלו נבדקת כאשר משתמש רוט (root user) מכניס פקודה. |
| LDPATH | משתנה זה מכיל רשימה של תיקיות המופרדות ביניהן על ידי פסיק. משמש dynamical linker בחיפוש אחר ספריה. |
| MANPATH | משתנה זה מכיל רשימה של תיקיות המופרדות ביניהן על ידי פסיק. פקודת man מחפשת ברשימה זו אחר דפי מדריך (man pages) |
| INFODIR | משתנה זה מכיל רשימה של תיקיות המופרדות ביניהן על ידי פסיק. פקודת info מחפשת ברשימה זו אחר דפי מידע. |
| PAGER | משתנה זה מכיל את הנתיב לתוכנית המאפשרת צפייה בתוכן קבצים (כגון less או more) |
| EDITOR | משתנה זה מכיל את הנתיב לתוכנית המאפשרת שינוי תוכן של קבצים (כמו nano או vi) |
| KDEDIRS | משתנה זה מכיל רשימה של תיקיות המופרדות ביניהן על ידי פסיק. תיקיות אלו מכילות מידע ספציפי ל KDE |
| CLASSPATH | משתנה זה מכיל רשימה של תיקיות המופרדות ביניהן על ידי פסיק. תיקיות אלו מכילות Java Classes |
| CONFIG_PROTECT | משתנה זה מכיל רשימה של תיקיות המופרדות ביניהן על ידי רווח. תיקיות אלו אמורות להיות מוגנות על ידי פורטג' בזמן עידכונים. |
| CONFIG_PROTECT_MASK | משתנה זה מכיל רשימה של תיקיות המופרדות ביניהן על ידי רווח. תיקיות אלו אמורות להיות לא-מוגנות בידי פורטג' בזמן עידכונים. |
דוגמאות להצבת ערכים במשתנים אלו:
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf
[עריכה] הגדרת משתנים גלובלית
[עריכה] ספרית etc/env.d/
כדי לרכז את הגדרות משתנים אלו במקום אחד, ג'נטו הביא את etc/env.d/. בספריה זו תמצא מספר קבצים כגון 00basic, 05gcc וכו' המכילים משתנים הדרושים לתוכנות ששם הקובץ נגזר מהן. לדוגמה, כאשר התקנת gcc, הותקן בנוסף קובץ בשם 05gcc המכיל את המשתנים הדרושים ל gcc.
דוגמה לתוכן 05gcc:
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man" INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info" CC="gcc" CXX="g++" LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
הפצות אחרות אומרות לך להוסיף או לשנות את המשתנים ב etc/profile/ או במקומות אחרים. ג'נטו מאידך מקל עליך (ועל פורטג') לתחזק ולנהל את משתני הסביבה מבלי להקדיש תשומת לב לקבצים המרובים היכולים להכיל משתני סביבה. לדוגמה, כאשר gcc מתעדכן, גם הקובץ etc/env.d/05gcc/ מתעדכן אוטומאטית, מבלי להטריח את המשתמש. לא רק פורטג' מרוויח מכך, אלה גם אתה. לעיתים תתבקש להפוך משתנה סביבה מסויים לכזה המוכר לכל המערכת. נקח לדוגמה את המשתנה http_proxy. במקום להתעסק עם etc/profile/ תוכל ליצור קובץ בשם etc/env.d/99local/ ולהכניס את כל הגדרותיך לשם. לדוגמה:
תוכן: /etc/env.d/99local http_proxy="proxy.server.com:8080"
על ידי השימוש באותו קובץ עבור כל הגדרותיך, תוכל לקבל מבט מהיר מהן ההגדרות המקומיות שלך.
[עריכה] תסריט env-update
משתנה PATH מוגדר על ידי מספר קבצים ב etc/env.d/. זו אינה שגיאה: כאשר אתה מריץ את env-update הוא יחבר מספר הגדרות יחד לפני שיעדכן את משתני הסביבה, ובזאת מקל על חבילות תוכנה (ומשתמשים) להוסיף משתני סביבה משלהם, מבלי לשבש ערכים שכבר קיימים.
תסריט env-update יעדכן את הערכים בסדר האלפבתי של קבצי etc/env.d/. שמות הקבצים חייבים להתחיל ב2 ספרות עשרוניות. דוגמא לסדר העדכון של env-update:
00basic 99kde-env 99local +-------------+----------------+-------------+ PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
שרשור המשתנים קיים רק עם המשתנים הבאים: KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK. לגבי כל שאר המשתנים, ההגדרה האחרונה היא הקובעת, וזאת לפי הסריקה האלפבתית של הקבצים בספריה etc/env.d/. כאשר אתה מריץ את env-update, התסריט יצור את כל משתני הסביבה ויאחסנם בקובץ etc/profile.env/ (המשומש על ידי etc/profile/ ) בנוסף הוא יוציא את כל המידע מתוך המשתנה LDPATH על מנת ליצור את הקובץ etc/ld.so.conf/. לאחר מכן הוא יפעיל את ldconfig כדי ליצור מחדש את הקובץ etc/ld.so.cache/ אשר המקשר הדינמי (Dynamical Linker) עושה בו שימוש.
אם ברצונך להבחין בהשפעה של env-update מייד לאחר הפעלתו, עליך להקליד את הפקודה הבאה. משתמשים אשר התקינו ג'נטו בעצמם בוודאי יזכרו בפקודה מתוך הוראות ההתקנה:
# env-update && source /etc/profile
הערה: הפקודה הנ"ל מעדכנת את המשתנים רק במסוף הנוכחי, במסופים חדשים ובתהליכים המופעלים מתוכם. כך שאם הנך עובד ב X11 עליך להקליד source /etc/profile בכל מסוף חדש שתפתח, או לאתחל את X11 כדי שכל המסופים יקבלו את השינוי. אם הנך משתמש במנהל התחברות (login manager) עליך להתחבר כרוט (root)ולהקליד etc/init.d/xdm restart/ ולא יהא עליך להתנתק ולהתחבר מחדש כדי ש X יעביר את השינוי במשתני הסביבה לכל שאר התהליכים.
[עריכה] הגדרת משתנים באופן מקומי
[עריכה] משתנים יחודיים למשתמש
לא תמיד תרצה להגדיר משתנה סביבה גלובלי. לדוגמה אולי תרצה להוסיף את home/my_user/bin/ והספריה בה אתה עובד כרגע לנתיב PATH אולם מאידך לא תרצה שהמשתמשים האחרים במחשב יראו את השינוי הזה. אם רצונך להגדיר משתנה כמקומי עליך להשתמש ב bashrc./~ או bash_profile./~
(סימן נקודותיים שלאחריו אין שם ספריה, נחשב כספריה הנוכחית)
PATH="${PATH}:/home/my_user/bin:"
הדוגמה הנ"ל מראה שינוי בקובץ bashrc./~ . כאשר תתחבר מחדש משתנה PATH שלך יעודכן מחדש.
