ตัวแปรสภาพแวดล้อมของระบบตั้งอยู่ที่ไหนใน Mountain Lion


46

ในสิงโต (และรุ่นก่อนหน้า) .MacOSX/environment.plistมันอยู่ใน หลังจากอัปเกรดเป็น 10.8 ไฟล์ยังคงอยู่ แต่ตัวแปรไม่ทำงาน

ฉันได้ลองเพิ่มเข้าไป/etc/launchd.confแล้วพวกเขาจะปรากฏใน Terminal แต่ไม่ใช่แอปพลิเคชัน GUI (เช่น IDE ของฉัน)


คุณรีบูตหลังจากเปลี่ยน/etc/launchd.confหรือไม่?
nohillside

ฉันทำแล้วและตัวแปรทั้งหมดในตอนนี้มีอยู่ในเทอร์มินัลใด ๆ แต่ไม่มีสำหรับ IDE ของฉัน
เฟลิกซ์

บางที IDE อาจไม่เปิดเผยสภาพแวดล้อมให้คุณ (ดูคำตอบของฉัน)? IDE คืออะไร มันเปิดตัวโดยตรงโดย Finder หรือ Spotlight?
halloleo

คำตอบ:


22

ฉันถามคำถามนี้ในฟอรัมนักพัฒนาของ Apple เช่นกันและได้รับการตอบกลับนี้อย่างเป็นทางการ

เปลี่ยน Info.plist ของ. app เองเพื่อให้มีพจนานุกรม "LSEnvironment" พร้อมกับตัวแปรสภาพแวดล้อมที่คุณต้องการ
~ / .MacOSX / environment.plist ไม่รองรับอีกต่อไป


2
ตั้งอยู่ที่ไหน
orome

มันจะมีประโยชน์ที่จะให้ลิงค์ไปยังตัวอย่างที่เฉพาะเจาะจงมากขึ้น
Blaisorblade

1
อัปเดต: ฉันลองเปลี่ยนไฟล์นั้นหลังจากหาไวยากรณ์ (ฉันคิดว่า) แต่มันไม่ทำงานเลยสำหรับฉัน
Blaisorblade

4
จะมี Info.plist ต่อแอปพลิเคชันใน WhatEver.app/Content/Info.plist คุณสามารถแก้ไขได้ด้วย XCode คลิกที่ "+" ในรายการคุณสมบัติข้อมูลและเพิ่มพจนานุกรมชื่อ LSEnvironment หากคุณพิมพ์อย่างถูกต้องมันจะเปลี่ยนชื่อเป็นตัวแปรสภาพแวดล้อม จากนั้นคุณคลิก "+" โดยที่สำหรับแต่ละตัวแปรสภาพแวดล้อมที่คุณต้องการเพิ่ม
เฟลิกซ์

2
นี่เป็นวิธีการแก้ปัญหาที่ดี แต่ไม่สามารถใช้งานได้อีกต่อไปเมื่อ Yosemite 10.10.5
Dalmazio

21

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันคิดว่าฉันจะชี้ให้เห็นว่าในโยเซมิตี/etc/launchd.confไม่ทำงานอีกต่อไป (ตามที่ได้รับการยืนยันจากหน้าคน) ดังนั้นนี่คือทางเลือก

เรียกใช้ AppleScript Editor แล้วป้อนคำสั่งดังนี้:

do shell script "launchctl setenv variablename value"

(เพิ่มหลายบรรทัดเท่าที่คุณต้องการ)

ตอนนี้บันทึก (⌘S) เป็นรูปแบบไฟล์: แอพลิเคชัน ในที่สุดก็เปิดการตั้งค่าระบบผู้ใช้ & กลุ่มรายการเข้าสู่ระบบและเพิ่มแอปพลิเคชันใหม่ของคุณ


โปรดทราบว่าอาจไม่ทำงานกับแอปอื่น ๆ ที่เปิดเป็นรายการเข้าสู่ระบบและอาจเป็นแอปที่คุณเปิดอย่างรวดเร็วหลังจากเข้าสู่ระบบ
151019

สิ่งนี้ใช้ได้สำหรับฉัน ขอบคุณมาก. นี่มันบ้าไปแล้วทั้งวัน!
wholladay

2
ดูเหมือนว่าเป็นทางออกที่แท้จริงและเป็นสากลเท่านั้น แต่ต้องมีผู้โหวตเพิ่มอีก 9 คนเพื่อขึ้นไปและเป็นคำตอบแรก : c
Sarge Borsch

สิ่งนี้ใช้ได้กับฉันใน El Capitan ตามที่ระบุไว้ข้างต้นโดย @Mark มีปัญหาเกี่ยวกับการสั่งซื้อ (เช่นแอปพลิเคชันที่เริ่มทำงานต่ออาจหรือไม่มีสภาพแวดล้อม) แต่เมื่อเข้าสู่ระบบในงานนี้ตามที่คุณคาดหวัง นั่นคือแอปพลิเคชันที่เริ่มต้นจาก Spotlight หรือ Dock มีสภาพแวดล้อมที่ถูกต้อง
Alec Thomas

@ Mark คุณสามารถลองคำตอบนี้ใช้ประโยชน์จาก Launch Agent ในกรณีของฉันตัวแทนการเรียกใช้เริ่มต้นหลังจากรายการล็อกอินดังนั้นฉันจึงย้ายแอปพลิเคชันเป้าหมาย (เช่น Eclipse) จากรายการเข้าสู่ตัวแทนตัวแทนเพื่อที่พวกเขาจะเริ่มต้นหลังจากตัวแปรสภาพแวดล้อมการตั้งค่าโปรแกรมพิเศษนี้
Franklin Yu

10

ตามที่คุณค้นพบการใช้ไฟล์ environment.plist จะไม่ถูกติดตามอีกต่อไปตัวแปรที่เก็บไว้ใน Info.plist เนื่องจากสตริงLSEnvironmentจะถูกตั้งค่าโดย launchdเท่านั้น

คุณไม่สามารถพึ่งพาตัวแปรเหล่านี้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมทั่วไปที่เทอร์มินัลจะตั้งค่าหากคุณเรียกโปรแกรมของคุณจากเทอร์มินัล / เชลล์โดยตรง ข่าวดีก็คือopen -aคำสั่งจะเรียกใช้ launchd เพื่อทำการเปิดตัวดังนั้นตัวแปรจะถูกตั้งค่าอย่างสม่ำเสมอสำหรับสภาพแวดล้อมของแอปหากไม่ใช่สำหรับสภาพแวดล้อมเชลล์ในเครื่อง


4

การตั้งค่าตัวแปรสภาพแวดล้อม/etc/launchd.confเป็นวิธีที่จะดำเนินการ: ทุกแอปพลิเคชั่นที่เปิดตัวหลังจากรีบูตโดยเชลล์ภายในเครื่อง Finder หรือ Spotlight สืบทอดตัวแปรเหล่านี้ - ฉันได้ทดสอบสิ่งนี้กับ Mountain Lion 10.8.3 อย่างกว้างขวาง

2 คำเตือน:


1
/etc/launchd.confไม่ได้รับการสนับสนุนอีกต่อไปตั้งแต่โยเซมิตี ดูapple.stackexchange.com/questions/106355/…
Franklin Yu

3

ลองlaunchctl setenv NAME VALUEดู ฉันไม่รู้ว่า / อะไรที่แตกต่างจากการแก้ไข. launchdconf แต่มันใช้ได้กับฉันทั้งในแอป Terminal และ GUI รายละเอียดเพิ่มเติม.

หมายเหตุสิ่งนี้ไม่สามารถอยู่รอดได้ในการรีบูต นี่คือวิธีการที่จะแก้ไขปัญหาที่


3
นี่เป็นหน้าที่ค่อนข้างยาวที่คุณกำลังเชื่อมโยงไปถึง ส่วนที่เกี่ยวข้องอยู่ที่ไหน คุณสามารถรวมมันไว้ในคำตอบของคุณเพื่อให้ง่ายขึ้นสำหรับทุกคนหรือไม่
nohillside

2
อ๊ะจุดดีคิดว่าฉันได้รวมส่วนใน url นั้นมากขึ้น แก้ไขแล้ว.
ไรอัน

1
วิธีที่จะเอาชีวิตรอดในการรีบู๊ตเนื่องจากมีการใช้ environment.plist ซึ่งหยุดทำงานภายใต้ Lion
user151019
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.