Làm cách nào tôi có thể đặt biến môi trường cho ứng dụng GUI trong OS X Mavericks?


19

Tôi đã vật lộn để có được một ứng dụng để chạy trong OS X Mavericks. Cuối cùng tôi đã có thể khiến nó chạy bằng cách khoan vào gói .app và chạy trực tiếp tập lệnh shell. Có vẻ như JAVA_HOME cần được đặt. Vì vậy, tôi đặt nó trong .profile của mình trong shell và mọi thứ đều hoạt động tốt.

Tuy nhiên, nếu tôi muốn chỉ cần nhấp vào biểu tượng trong thanh công cụ, nó sẽ không chạy. Tôi đoán rằng điều này là do JAVA_HOME không được đặt trên toàn cầu. Vì tôi không chạy ứng dụng trực tiếp từ hệ vỏ, OS X không biết JAVA_HOME là gì. Nó chỉ tiếp tục tìm kiếm.

Trong các phiên bản trước của OS X, dường như các biến môi trường có thể được đặt cho các ứng dụng GUI bằng cách thêm chúng vào /etc/launchd.conf. Tập tin này dường như không tồn tại trong Mavericks. Làm cách nào tôi có thể đặt biến môi trường toàn cầu sẽ hoạt động cho các ứng dụng GUI trong Mavericks?

Câu trả lời:


24

/etc/launchd.conf chưa bao giờ tồn tại theo mặc định, nhưng nó vẫn hoạt động trong 10.9.

  1. Chạy chẳng hạn sudo nano /etc/launchd.conf.
  2. Thêm một dòng như setenv JAVA_HOME /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home. (Tôi không biết những gì JAVA_HOMEthực sự nên được đặt thành mặc dù.)
  3. Hoặc khởi động lại hoặc chạy launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.confvà khởi chạy lại các quy trình.

launchctl exportin các biến được xuất bởi quá trình launchd của người dùng và sudo launchctl exportin các biến được xuất bởi quá trình launchd gốc.

Phương pháp này cũng có thể được sử dụng để đặt đường dẫn mặc định. Ví dụ tôi đã thêm dòng này vào /etc/launchd.conf:

setenv PATH /Users/lauri/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin

(Tôi đã sử dụng /Users/lauri/binthay ~/binvì vì ~/binsẽ /var/root/bindành cho các chương trình chạy bằng root.)


5
+1 để giải thích cách nhận thay đổi /etc/launchd.confmà không cần khởi động lại hệ thống. Để cấu hình các tệp biến môi trường PATH /etc/paths.d/nên được sử dụng.
Timo Meinen

4
Trên thực tế, /etc/launchd.confkhông hoạt động nữa sau 10.10
OleGG
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.