זוהי הפקודה envpathp שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
envpath - פעולות מתקדמות על משתני נתיב
תַקצִיר
הפעל את הסקריפט הזה עם האפשרות "-help" לפרטי שימוש.
תיאור
מנתח את שורת הפקודה, משנה את משתני הנתיב שצוינו ומבצע את השאר
טיעונים. יש שני מצבים, פשוט ו מתקדם:
פשוט MODE
מצב פשוט מציג תחביר חלופי, בלתי תלוי בפלטפורמה לציון נתיבים
שבו מפריד הנתיבים הוא "," וניתן להרחיב משתני סביבה עם @NAME@.
לדוגמה
envpath PATH=@PATH@,/usr/ucb -- printenv PATH
מוסיף את "/usr/ucb" ל-$PATH ו-Execs printenv נתיב. ה-"--" הוא אופציונלי.
אתה יכול גם לציין הכנה או הוספה באמצעות "+=" או "=+" בהתאמה:
מקם את /usr/ucb בחזית
envpath PATH+=/usr/ucb -- printenv PATH
מקם את /usr/ucb מאחור
envpath PATH=+/usr/ucb -- printenv PATH
מצב פשוט דורש רק סקריפט זה; זה לא מחייב את התקנת Env::Path.
מתקדם MODE
מצב מתקדם מספק בעצם גישה בשורת הפקודה לתכונות של Env::Path (ראה),
אשר חייב להיות מותקן. הדגל "-E" בוחר את משתנה הנתיב להפעלה ואחרים
דגלים מציינים פעולות עליו. לְמָשָׁל
envpath -E MANPATH -A / Tmp -R / usr / share / man -N -U -- בנאדם...
ייקח MANPATH, צרף / Tmp אליו, הסר כל התייחסות ל"/ usr / share / man", להסיר
כל dirs שלא קיים ("-N") והסר ערכים מיותרים ("-U") לפני ההפעלה איש.
האפשרות -Whence מאפשרת תבניות. לכן
envpath -W "חתול*"
ימצא את כל התוכניות ב-PATH שמתאימות לחתול*.
מחק ווינקינס
חלק גדול מהמניע לתסריט הזה היה לשימוש עם בניית ClearCase; אם אתה
מכירים או דואגים ל-ClearCase המשך לקרוא. בדרך כלל, במהלך בנייה (ולא רק עם
ClearCase), נתיבים כגון PATH, CLASSPATH ו-LD_LIBRARY_PATH חייבים להיות בהחלט
מְבוּקָר. אחת האפשרויות היא לכפות ערכים סטטיים של אלה לתוך הסביבה במהלך
תהליך בנייה, אחר הוא פשוט לדרוש/לצפות מהמשתמשים להגדיר את הנתיבים שלהם כראוי.
עם זאת, כל אחד מאלה יכול להוביל לשגיאות בניה עדינות או בזמן ריצה, ומקשה עליהן
משתמשים חדשים להתעדכן מכיוון שהסביבה האישית שלהם חייבת להיות בדיוק כזו.
בחירה נפוצה נוספת היא להשתמש רק בשמות נתיבים מלאים בתוך Makefile, הימנעות מהסתמכות
בנתיבי חיפוש בכלל. לרוב זו הדרך הטובה ביותר ללכת אך יכולה לדכא את ClearCase
ווינקינס. לדוגמה, נניח שאתה יוצר קבצי ascii מסוג כלשהו עם קובץ בינארי
קובץ הפעלה שבנית זה עתה:
$(INCDIR)/foo.h: $(BINDIR)/foomaker $(BINDIR)/foomaker ...
הבעיה עם זה היא שככל הנראה $(BINDIR) מכיל חלק פלטפורמה כמו 'solaris'
או 'hpux', מה שלא מאפשר לקרוץ בקובץ foo.h אפילו בפלטפורמות אחרות
למרות שזה ascii. אותו דבר יכול לעלות אפילו עם כלי עזר סטנדרטי שנבנה מראש
זה במקומות שונים בפלטפורמות שונות; "yacc", למשל, נמצא ב- / usr / bin on
לינוקס ו-/usr/ccs/bin ב-Solaris.
אתה יכול לשנות את הנתיב תוך כדי תנועה:
$(INCDIR)/foo.h: $(BINDIR)/foomaker PATH=$(BINDIR)$(SEP)$$PATH foomaker ...
אבל זה סובל מאותה בעיה: מכיוון ש$(BINDIR) ו-$PATH מורחבים פשוטו כמשמעו
בתוך תסריט הבנייה הם ידכאו ווינקינס. הנה פתרון באמצעות envpath:
$(INCDIR)/foo.h: $(BINDIR)/foomaker envpath PATH=@BINDIR@,@PATH@ foomaker ...
זה מסתיר את ההערכה של BINDIR ו-PATH כך clearmake אף פעם לא רואה דבר מלבד
המילולי, ובכך לפנות את השדה לקריצות. כמובן envpath מסוגל לעשות
יותר מזה, אבל זו הסיבה המקורית שזה נכתב.
השתמש ב-envpathp באופן מקוון באמצעות שירותי onworks.net