3.2. התמצאות במערכת הקבצים
3.2.1. הנתיב
כאשר אתה רוצה שהמערכת תבצע פקודה, אתה כמעט אף פעם לא צריך לתת את הנתיב המלא לפקודה הזו. לדוגמה, אנו יודעים כי ls הפקודה נמצאת ב / סל ספרייה (בדוק עם אשר -a ls), אך איננו צריכים להזין את הפקודה /bin/ls כדי שהמחשב יפרט את התוכן של הספרייה הנוכחית.
אל האני נתיב משתנה הסביבה מטפל בזה. משתנה זה מפרט את אותם ספריות במערכת שבהן ניתן למצוא קבצי הפעלה, וכך חוסך למשתמש הרבה הקלדה ושינון מיקומים של פקודות. אז הנתיב מכיל באופן טבעי הרבה ספריות המכילות בן איפשהו בשמותיהם, כפי שהמשתמש למטה מדגים. ה הד הפקודה משמשת להצגת התוכן ("$") של המשתנה נתיב:
רוג'יר:> הד $ PATH
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
רוג'יר:> הד $ PATH
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
בדוגמה זו, המדריכים / opt / local / bin, /usr/X11R6/bin, / usr / bin, / usr / sbin ו
/ סל לאחר מכן מחפשים את התוכנית הנדרשת. ברגע שנמצא התאמה, החיפוש מופסק, גם אם לא חיפשו בכל ספרייה בנתיב. זה יכול להוביל למצבים מוזרים. בדוגמה הראשונה למטה, המשתמש יודע שיש תוכנית בשם Sendsms לשלוח הודעת SMS, ומשתמש אחר באותה מערכת יכול להשתמש בה, אבל היא לא יכולה. ההבדל הוא בתצורה של נתיב מִשְׁתַנֶה:
[jenny@blob jenny]$ Sendsms bash: sendsms: הפקודה לא נמצאה [jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony
סיסמה: tony:~>אשר שולח הודעות
sendsms הוא /usr/local/bin/sendsms
tony:~>הד $PATH
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
[jenny@blob jenny]$ Sendsms bash: sendsms: הפקודה לא נמצאה [jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony
סיסמה: tony:~>אשר שולח הודעות
sendsms הוא /usr/local/bin/sendsms
tony:~>הד $PATH
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
שימו לב לשימוש ב- su מתקן (switch user), המאפשר להריץ מעטפת בסביבה של משתמש אחר, בתנאי שאתה יודע את סיסמת המשתמש.
קו נטוי אחורי מציין את המשך השורה הבאה, ללא זן מפריד בין קו אחד למשנהו.
בדוגמה הבאה, משתמש רוצה להתקשר ל- wc פקודה (ספירת מילים) כדי לבדוק את מספר השורות בקובץ, אבל שום דבר לא קורה והוא צריך להפסיק את הפעולה שלו באמצעות Ctrl+C קוֹמבִּינַצִיָה:
מגשר:~> מבחן wc -l
(Ctrl-C)
מגשר:~> איזה wc
wc הוא גיבוב (/home/jumper/bin/wc)
מגשר:~> הד $ PATH
/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
מגשר:~> מבחן wc -l
(Ctrl-C)
מגשר:~> איזה wc
wc הוא גיבוב (/home/jumper/bin/wc)
מגשר:~> הד $ PATH
/home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
השימוש אשר הפקודה מראה לנו שלמשתמש זה יש א בן-ספרייה בספריית הבית שלו, המכילה תוכנית שנקראת גם wc. מכיוון שהתוכנית בספריית הבית שלו נמצאת תחילה בעת חיפוש ב
נתיבים על קריאה ל wc, תוכנית "תוצרת בית" זו מבוצעת, עם קלט שהיא כנראה לא מבינה, אז עלינו לעצור אותה. כדי לפתור בעיה זו ישנן מספר דרכים (תמיד ישנן מספר דרכים לפתור בעיה ב-UNIX/Linux): תשובה אחת יכולה להיות לשנות את שם המשתמש wc תוכנית, או שהמשתמש יכול לתת את הנתיב המלא לפקודה המדויקת שהוא רוצה, אותה ניתן למצוא באמצעות ה- -a אפשרות אשר פקודה.
אם המשתמש משתמש בתוכניות בספריות האחרות בתדירות גבוהה יותר, הוא יכול לשנות את הנתיב שלו כדי לחפש בספריות שלו אחרון:
מגשר:~> ייצוא PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin
מגשר:~> ייצוא PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin