ในสิงโต (และรุ่นก่อนหน้า) .MacOSX/environment.plist
มันอยู่ใน หลังจากอัปเกรดเป็น 10.8 ไฟล์ยังคงอยู่ แต่ตัวแปรไม่ทำงาน
ฉันได้ลองเพิ่มเข้าไป/etc/launchd.conf
แล้วพวกเขาจะปรากฏใน Terminal แต่ไม่ใช่แอปพลิเคชัน GUI (เช่น IDE ของฉัน)
ในสิงโต (และรุ่นก่อนหน้า) .MacOSX/environment.plist
มันอยู่ใน หลังจากอัปเกรดเป็น 10.8 ไฟล์ยังคงอยู่ แต่ตัวแปรไม่ทำงาน
ฉันได้ลองเพิ่มเข้าไป/etc/launchd.conf
แล้วพวกเขาจะปรากฏใน Terminal แต่ไม่ใช่แอปพลิเคชัน GUI (เช่น IDE ของฉัน)
คำตอบ:
ฉันถามคำถามนี้ในฟอรัมนักพัฒนาของ Apple เช่นกันและได้รับการตอบกลับนี้อย่างเป็นทางการ
เปลี่ยน Info.plist ของ. app เองเพื่อให้มีพจนานุกรม "LSEnvironment" พร้อมกับตัวแปรสภาพแวดล้อมที่คุณต้องการ
~ / .MacOSX / environment.plist ไม่รองรับอีกต่อไป
ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันคิดว่าฉันจะชี้ให้เห็นว่าในโยเซมิตี/etc/launchd.conf
ไม่ทำงานอีกต่อไป (ตามที่ได้รับการยืนยันจากหน้าคน) ดังนั้นนี่คือทางเลือก
เรียกใช้ AppleScript Editor แล้วป้อนคำสั่งดังนี้:
do shell script "launchctl setenv variablename value"
(เพิ่มหลายบรรทัดเท่าที่คุณต้องการ)
ตอนนี้บันทึก (⌘S) เป็นรูปแบบไฟล์: แอพลิเคชัน ในที่สุดก็เปิดการตั้งค่าระบบ → ผู้ใช้ & กลุ่ม → รายการเข้าสู่ระบบและเพิ่มแอปพลิเคชันใหม่ของคุณ
ตามที่คุณค้นพบการใช้ไฟล์ environment.plist จะไม่ถูกติดตามอีกต่อไปตัวแปรที่เก็บไว้ใน Info.plist เนื่องจากสตริงLSEnvironmentจะถูกตั้งค่าโดย launchdเท่านั้น
คุณไม่สามารถพึ่งพาตัวแปรเหล่านี้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมทั่วไปที่เทอร์มินัลจะตั้งค่าหากคุณเรียกโปรแกรมของคุณจากเทอร์มินัล / เชลล์โดยตรง ข่าวดีก็คือopen -a
คำสั่งจะเรียกใช้ launchd เพื่อทำการเปิดตัวดังนั้นตัวแปรจะถูกตั้งค่าอย่างสม่ำเสมอสำหรับสภาพแวดล้อมของแอปหากไม่ใช่สำหรับสภาพแวดล้อมเชลล์ในเครื่อง
การตั้งค่าตัวแปรสภาพแวดล้อม/etc/launchd.conf
เป็นวิธีที่จะดำเนินการ: ทุกแอปพลิเคชั่นที่เปิดตัวหลังจากรีบูตโดยเชลล์ภายในเครื่อง Finder หรือ Spotlight สืบทอดตัวแปรเหล่านี้ - ฉันได้ทดสอบสิ่งนี้กับ Mountain Lion 10.8.3 อย่างกว้างขวาง
2 คำเตือน:
ssh
ดูเหมือนว่าจะทำตัวเป็นแบบนี้ - ดู... ทำไมเชลล์ระยะไกลผ่าน ssh ไม่สืบทอดสภาพแวดล้อม ... )/etc/launchd.conf
ไม่ได้รับการสนับสนุนอีกต่อไปตั้งแต่โยเซมิตี ดูapple.stackexchange.com/questions/106355/…
ลองlaunchctl setenv NAME VALUE
ดู ฉันไม่รู้ว่า / อะไรที่แตกต่างจากการแก้ไข. launchd
conf แต่มันใช้ได้กับฉันทั้งในแอป Terminal และ GUI รายละเอียดเพิ่มเติม.
หมายเหตุสิ่งนี้ไม่สามารถอยู่รอดได้ในการรีบูต นี่คือวิธีการที่จะแก้ไขปัญหาที่
/etc/launchd.conf
หรือไม่?