วิธีการเปลี่ยนตัวแปรสภาพแวดล้อม PATH เป็น OS X 10.8 Mountain Lion ที่จะมองเห็นได้ในแอปพลิเคชัน GUI [ซ้ำ]


14

ฉันลองใช้วิธีการทั้งหมดที่ฉันเคยได้ยินเกี่ยวกับการตั้งค่าตัวแปรสภาพแวดล้อมบน OS X 10.8 แต่ดูเหมือนว่าไม่มีวิธีใดที่ทำงานได้

ในการทดสอบให้รันสคริปต์ทุบตีจากภายในแอปพลิเคชั่น gui เช่น Eclipse หรือ IntelliJ IDEA

#!/bin/bash
set|grep PATH

สิ่งที่ฉันทดสอบและที่ไม่ทำงานแม้หลังจากรีบูต:

  • /etc/paths และ /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (ผู้วางแผนไบนารีทำตามที่แนะนำ)
  • เรียกใช้launchctl setenv PATH $PATHจากบรรทัดคำสั่งนี่ควรอัปเดต PATH สำหรับแอพ GUI อย่างน้อยสำหรับเซสชันปัจจุบัน คาดเดาสิ่งที่ไม่มีการเปลี่ยนแปลง

ดูเหมือนว่า PATH นั้นใช้PATH=/usr/bin:/bin:/usr/sbin:/sbinสำหรับแอป GUI เสมอ


คุณตกลงกับโซลูชันที่ตั้งค่า bash path หรือคุณต้องการเปลี่ยนค่าของ launchd ของพา ธ ฐานสำหรับกระบวนการทั้งหมดหรือไม่?
bmike

ฉันต้องเปลี่ยน PATH ที่ใช้โดยแอพ GUI สำหรับเทอร์มินัล / bash / ... ฉันมีชุดโซลูชั่นการทำงานจำนวนมากแล้ว
sorin

ฉันไม่รู้ว่าเพราะเหตุใด eclipse และอื่น ๆ ไม่เพียง แต่สนับสนุนตัวแปรสภาวะแวดล้อมรันไทม์ดังนั้นผู้พัฒนาจาวาทุกคนบน Mac ไม่จำเป็นต้องกังวลเกี่ยวกับการตั้งค่าเส้นทางหรือการจัดหาในตัวแปรที่ต้องการในแต่ละโครงการ
bmike

คำตอบดูที่นี่: apple.stackexchange.com/questions/51677/…
Flori

คำตอบ:


8

ด้วย Mountain Lion /etc/launchd.confเป็นที่ที่คุณควรตั้งค่า Path Applications ของ GUI จำไว้ว่าไม่ใช่ไฟล์สคริปต์ รองรับเฉพาะlaunchctlคำสั่งเท่านั้นดังนั้นคุณควรเขียนสิ่งที่ชอบ:

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

โปรดทราบว่ามันไม่รองรับการแทนที่ตัวแปรสภาพแวดล้อมของเชลล์ (เช่น$PATH) ดังนั้นคุณจะต้องตั้งค่าทุกเส้นทางที่คุณต้องการรวม เป็นความคิดที่ดีที่จะรักษาเส้นทางเดิมที่คุณพูดถึง ( /usr/bin:/bin:/usr/sbin:/sbin)

คุณจะต้องรีบูทหลังจากเปลี่ยน (หรือสร้าง) ไฟล์เพื่อให้การเปลี่ยนแปลงมีผล


สิ่งนี้ใช้ได้กับฉันใน 10.8.2 สำหรับการตั้งค่า PATH ซึ่งใช้งานได้กับ Keyboard Maestro
TJ Luoma

หน้าคนบอกว่าคุณสามารถใช้ $ HOME / .launchd.conf แต่นั่นไม่ได้ผลสำหรับฉัน ใช้ /etc/launchd.conf ได้ ฉันอยู่ที่ 10.8.4
pedz

มันใช้งานไม่ได้สำหรับฉัน:-bash: setenv: command not found
Colas

ถ้าใครสับสนเหมือน Colas, setenvเป็นคำสั่งเพื่อให้คุณใช้มันเหมือนlaunchctl launchctl setenv
Jon Shier

3

ใช้งานได้ถ้าคุณเรียกแอพ GUI จาก Terminal:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

ป้อนคำอธิบายรูปภาพที่นี่

ไม่ค่อยดีหรือสะดวกสบาย แต่มันทำงานถ้าจำเป็น


ไม่นานไม่นาน ฉันไม่เต็มใจที่จะทำเช่นนี้มันจะทำงานได้ในบางครั้งเท่านั้น แอพสามารถเริ่มต้นได้เมื่อคุณคลิกที่ไฟล์
sorin

2
ที่ผมกล่าวว่ามันไม่ดีจริงๆ แต่อาจทำงานจนกว่าแอปเปิ้ลช่วยแก้ไขปัญหา (เพราะมันควรจะเป็นไปได้ด้วย launchctl)
nohillside

2

ฉันปรุงสารละลายอีกวิธีหนึ่งโดยได้รับแรงบันดาลใจจากpatrix ที่นี่หวังว่ามันจะเจ็บปวดน้อยลง เปิดAutomatorเลือกแอปพลิเคชันเป็นเป้าหมายแล้วเลือกExecute Shell script(หรือสิ่งที่เรียกว่าในภาษาเยอรมันเรียกว่า "Shell-Skript ausführen" เท่าที่เห็นด้านบน) เป็นการกระทำ ในสคริปต์เพียงพิมพ์

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

จากนั้นบันทึกทุกสิ่งในทุกที่ที่คุณต้องการและถ้าคุณต้องการเรียกใช้YourApplicationHereให้เปิด "แอปพลิเคชันอัตโนมัติ" ที่สร้างขึ้นแทน

ผมทดสอบนี้กับTerminalเป็นYourApplicationHereและเห็นด้วยlaunchctl exportที่FOOถูกกำหนดแน่นอนบาร์ ฉันหวังว่ามันจะทำงานเพื่อคนอื่นเช่นกัน

ท้ายที่สุดถ้าคุณใช้วิธีแก้ไขปัญหานี้สำหรับตัวแปรสภาพแวดล้อมของคุณแทนที่จะพิมพ์launchctlเนื้อหาในเชลล์สคริปต์คุณอาจจะเรียก/Users/Shared/conflaunchd.sh(ซึ่งคุณต้องทำก่อนพร้อมกับไฟล์ที่อธิบายตัวแปร)


-1

ควรlaunchctlมีไว้PATHสำหรับแอพ GUI ในการตั้งค่าพา ธ ไปยังเส้นทางของเชลล์ให้เพิ่มรายการต่อไปนี้ลงในไฟล์เชลล์ rc ของคุณหลังจากตั้งค่าพา ธ ของคุณ:

launchctl setenv PATH $PATH

1
น่าเสียดายที่นี่ใช้งานไม่ได้ :-(
nohillside


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