שאלה כיצד ניתן להגדיר את משתנה הסביבה PATH העולמי ב- OS X?


אני רוצה לצרף את משתנה הסביבה PATH העולמי על OS X, כך שכל קליפות המשתמש ויישומי GUI לקבל את הסביבה PATH אותו.

אני יודע שאני יכול לצרף את הנתיב סקריפטים ההפעלה פגז, אבל הגדרות אלה לא יירשו על ידי יישומי GUI.

הדרך היחידה שמצאתי עד כה היא להגדיר מחדש את משתנה הסביבה PATH ב /etc/launchd.confYou

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

לא הצלחתי למצוא דרך להוסיף למעשה ל PATH launchd.conf.

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


97
2018-05-31 19:08




ראה: stackoverflow.com/questions/347286 - rjmunro
עבור יוסמיטי ומאוחר יותר, ראה stackoverflow.com/questions/25385934/... - thSoft
אף אחת מהתשובות כאן לא מתייחסת לשאלה של OP. אבל ההערה כאן על ידי thSoft הוא הנכון על הכסף! אולי זה צריך להיות ממוזג או קשור לשאלה כי הפניה: stackoverflow.com/questions/25385934/... - Kevin Buchs


תשובות:


Palmer של GUI מידע היא נכונה, אבל יש דרך יותר לתחזוקה לשנות את הנתיב לראות את הקליפה. כמו אמר mediaslave, אתה יכול לערוך /etc/paths, אבל אפילו טוב יותר אתה יכול להוריד קובץ טקסט ב /etc/paths.d/ כי יש נתיב בו וכל פגזים יהיה לבנות את הנתיב כראוי.

לדוגמה, במערכת שלי:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin

70
2018-05-28 06:53



נחמד תודה! הערה: פעולה זו מחייבת אותך לצאת ולהיכנס שוב לפני שהיא פועלת. - weronika
@weronika: מצאתי שזה היה מספיק כדי להפסיק ולהפעיל מחדש X11 (פחות כואב מאשר כניסה לחלוטין החוצה). לא ניסיתי את זה Terminal. - Peter Gluck
התכוונתי טרמינל - אתה צודק, שכחתי לציין. - weronika
זה טוב לדעת, אבל זה לא עונה על השאלה של OP כי מנגנון זה אינו חל על יישומי GUI. אופ היה מחפש מאוחד פתרון המאפשר לו צירוף אל ברירת המחדל $PATH. - mklement
למה אתה מתכוון על ידי "המערכת שלי" כאן, @cogg? האם לא כולנו משתמשים במערכת ההפעלה X כאן? מצטער, אבל אני עדיין חדש OS X. אני משתמש OS X 10.7 - ericn


/etc/launchd.conf

ה launchd.conf הקובץ הוא ** הפתרון המלא רק כי יעבוד עבור שורת הפקודה והן יישומי GUI ב OS X x10.8 (אריה ההר) ו v10.9 (Mavericks), אחד שיעבוד עם GUI ו קונסולת יישומים, עבור כל המשתמשים.

sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf

הוסף

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

בדוגמה שלמעלה הוספתי /usr/local/bin לערכי ברירת המחדל של הסביבה עבור PATH.

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

זכור, כל השאר הם רק פתרונות חלקיים:

  • environment.plist לא עובד עבור יישומים שהושק באמצעות זרקור.
  • /etc/paths - רק עבור קונסולה
  • /etc/csh.cshrc או /etc/bashrc - רק עבור כמה פגזים

תשובה זו מבוססת על אותה שאלה הגדרת משתני סביבה ב- Mac OS X.


47
2018-06-04 20:30



ממצא נהדר, אבל השאלה כבר מדבר launchd והוא שואל איך צירוף אל הנתיב שבו. - cregox
האם באמת הוספת הערה לשאלה המקורית המצביעה על עצמך כ"תשובה האמיתית "? - TJ Luoma
זה משתמע על ידי שלך - תשובה מועילה, אבל רק כדי לאיית את זה: הרצון של OP כדי צירוף אל נתיב ברירת המחדל אינו נתמך, מכיוון שאינך יכול להפנות אל משתני סביבה אחרים /etc/launchd.conf. - mklement
זה לא גלובלי - סביבת שורת הפקודה תבטל את זה כאשר / etc / פרופיל קורא path_helper ובונה מחדש PATH מ / etc / נתיבים ו / / cc / paths.d/ - Dave X
לפי apple.stackexchange.com/questions/106355/..., זה לא עובד זמן רב עבור יוסמיטי או מאוחר יותר - ericn


אתה תצטרך להציב אותו על בסיס פגז על בסיס פגז; Bash ו- csh כמו פגזים אינם חולקים את אותם קבצי תצורה ותחביר עבור התאמת PATH.

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

אז אתה רוצה להוסיף

setenv PATH "$PATH:/add/my/extra/path"

ל /etc/csh.cshrc ו

export PATH="$PATH:/more/paths:/

ל /etc/bashrc.

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

הפורמט של הקובץ הוא כך:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

עוד על environment.plist  הוא באתר של אפל.


7
2018-06-01 12:24



אבל ההגדרות לעשות את האפקט כאשר מוגדר ב / etc / launchd.conf ... המממ ... / אני מבולבל. - Xerxes
באמת? מה משתנה הסביבה אתה הגדרת שם? - palmer
רק עדכון של OS X 10.8: ~/.MacOSX/environment.plist הגישה כבר לא נתמכת ואין תחליף ברמת המשתמש. מערכת רחב אתה יכול להשתמש /etc/launchd.conf(ויש פתרון לכל * אפליקציה). - mklement
לא עונה על השאלות של OP. - Kevin Buchs


תוכל לערוך את הנתיב הגלובלי שלך על ידי הוספת שורות אל /etc/paths, נתיב אחד לכל שורה.

sudo nano /etc/paths צריך להביא אותך לשם.


3
2017-09-03 18:04



זה טוב לדעת, אבל זה לא עונה על השאלה של OP כי מנגנון זה אינו חל על יישומי GUI. - mklement


יש לך להסתכל על דף האיש עבור path_helper כלי שורת הפקודה ב- OS X? עניתי א שאלה בנושא מסוים על כך כי אני חושב שאתה עשוי למצוא מועיל.


1
2018-06-01 12:50





אני לא בטוח אם מישהו מכוסה הכי פשוט ורוב אלגנטי דרך. לפחות ב Mac OS X v10.6 (נמר שלג).

מתעסק עם [/etc/|~/.] of [profile|bashrc] קבצים עשויים לעבוד, אבל זה קצת של גרזן. ה /etc/paths.d/ הספרייה היא הדרך ללכת:

  • סודו לתוך העורך האהוב עליך.
  • צור קובץ חדש בשם *name* (פשוט לא שם את זה משהו כבר שם) ב /etc/paths.d/ עם נתיב לכל שורה:

    /usr/X11/bin
    /Developer/usr/bin
    
  • אז תוסיף

    eval '/usr/libexec/path_helper -s`
    

    ל profile או bashrc, ואתה צריך להיות טוב ללכת.


1
2018-01-31 07:22



זה טוב לדעת, אבל זה לא עונה על השאלה של OP כי מנגנון זה אינו חל על יישומי GUI. - mklement
האם שם הקובץ פשוטו כמשמעו *name*? או שאתה מתכוון רק name? - Peter Mortensen


אני לא בטוח אם Launchd מקבל את זה, אבל נסה:

setenv PATH "$ PATH: / my / path"

0
2018-05-31 19:26



למרבה הצער זה לא עובד. זה לא נראה כמו Launchctl יש גישה משתני סביבה קל. יש פקודה לקבל משתני סביבה, אבל אין שום תיעוד על אופן השימוש בו. - lajos


אני לא בטוח למה אתה משתמש /etc/launchd.conf לעומת /etc/profile - אבל אני לא מומחה Mac OS X - אני מאמין לך שאני בטוח שזה עובד, אבל launchd הוא Mac OS X יישום / החלפה עבור init - Mac OS X מבלבל אותי.

בכל מקרה, setenv PATH "$PATH:/more/paths:/and/more/paths" יעבוד (tcsh), ואת המקבילה פגז bourn הוא export PATH="$PATH:/more/paths:/and/more/paths" אין לי מושג איך launchd קשורה לקליפה מסוימת.

אני חושב ששאלתי שאלות נוספות ואז עניתי =)


0
2018-06-01 04:10



/ etc / פרופיל נתיב הגדרות אינן נראות על ידי כל OS X OS GUI Apps. זה חל רק על bash. אני רוצה את כל היישומים כדי לקבל את הגדרת הנתיב החדש. - lajos
תודה - תודה על ניקוי זה בשבילי :) - Xerxes
יוניקס? בטח, זה יוניקס. אני מתכוון, בערך. כן, אנחנו שברו דברים זה עבד במשך 30 שנה, אבל זה עדיין יוניקס! / אנחה - Matt Simmons