Di mana variabel lingkungan sistem ditetapkan di Mountain Lion?

46

Di Lion (dan rilis sebelumnya) itu di .MacOSX/environment.plist. Setelah memutakhirkan ke 10.8, file itu masih ada, tetapi variabel tidak mengambil.

Saya juga sudah mencoba menambahkannya ke /etc/launchd.confdan mereka akan muncul di Terminal, tetapi bukan aplikasi GUI (seperti IDE saya).

Felix
sumber
Apakah Anda reboot setelah mengubah /etc/launchd.conf?
nohillside
Saya lakukan, dan semua variabel di dalamnya sekarang tersedia di terminal apa pun, tetapi tidak ada untuk IDE saya.
Felix
Mungkin IDE tidak mengekspos lingkungan kepada Anda (Lihat jawaban saya )? IDE apa itu? apakah diluncurkan langsung oleh Finder atau Spotlight?
halloleo

Jawaban:

22

Saya mengajukan pertanyaan ini di Forum Pengembang Apple dan mendapatkan jawaban resmi ini.

Ubah daftar Info.pl. Dari aplikasi itu sendiri untuk berisi kamus "LSEnvironment" dengan variabel lingkungan yang Anda inginkan.
~ / .MacOSX / environment.plist tidak lagi didukung.

Felix
sumber
2
Di mana itu berada?
orome
Akan bermanfaat untuk memberikan tautan ke contoh yang lebih spesifik.
Blaisorblade
1
Pembaruan: Saya mencoba mengubah file itu, setelah mencari tahu sintaks (saya pikir), tetapi tidak berfungsi sama sekali untuk saya.
Blaisorblade
4
Akan ada Info.plist per aplikasi di WhatEver.app/Content/Info.plist. Anda dapat mengeditnya dengan XCode. Klik "+" pada Daftar Informasi Properti dan tambahkan kamus yang disebut LSEnvironment. Jika Anda mengetiknya dengan benar, itu akan mengubahnya menjadi variabel Lingkungan. Kemudian Anda mengklik "+" dengan itu untuk setiap variabel lingkungan yang ingin Anda tambahkan.
Felix
2
Ini adalah solusi yang bagus, tetapi tidak lagi berfungsi pada Yosemite 10.10.5.
Dalmazio
21

Saya tahu ini adalah pertanyaan lama tetapi saya pikir saya akan menunjukkan bahwa di Yosemite /etc/launchd.conftidak lagi berfungsi (seperti yang dikonfirmasi oleh halaman manual). Jadi inilah alternatifnya.

Luncurkan AppleScript Editor, masukkan perintah seperti ini:

do shell script "launchctl setenv variablename value"

(tambahkan baris sebanyak yang Anda suka)

Sekarang simpan (⌘S) sebagai format File: Aplikasi . Akhirnya buka Pengaturan SistemPengguna & GrupItem Login dan tambahkan aplikasi baru Anda.

ruario
sumber
Perhatikan bahwa ini mungkin juga tidak berfungsi dengan aplikasi lain yang dibuka sebagai item Login dan mungkin aplikasi yang Anda buka dengan cepat setelah login
user151019
Ini berhasil untuk saya. Terima kasih banyak. Ini sudah gila sepanjang hari!
wholladay
2
Sepertinya satu-satunya solusi nyata & universal sejauh ini. Tetapi perlu 9 upvotes lagi untuk naik dan menjadi jawaban pertama. : c
Sarge Borsch
Ini bekerja untuk saya di El Capitan. Seperti dicatat di atas oleh @ Mark, ada masalah dengan pemesanan (mis. Aplikasi yang dilanjutkan mungkin atau mungkin tidak memiliki lingkungan), tetapi begitu login ini berfungsi seperti yang Anda harapkan. Artinya, aplikasi yang dimulai dari Spotlight atau Dock memiliki lingkungan yang benar.
Alec Thomas
@ Mark Anda dapat mencoba jawaban ini , menggunakan Agen Peluncuran. Dalam kasus saya, Agen Peluncuran dimulai setelah Item Masuk, jadi saya memindahkan aplikasi target (seperti Eclipse) dari Item Masuk ke Agen Peluncuran, sehingga item tersebut akan dimulai setelah variabel lingkungan pengaturan pengaturan aplikasi khusus ini.
Franklin Yu
10

Seperti yang telah Anda temukan, penggunaan file environment.plist tidak lagi diikuti, variabel yang disimpan di Info.plist sebagai string LSEnvironment hanya ditetapkan oleh launchd .

Anda tidak dapat bergantung pada mereka untuk mengatur variabel lingkungan umum yang akan ditetapkan terminal jika Anda memanggil program Anda dari terminal / shell secara langsung. Berita baiknya adalah open -aperintah tidak memicu launchd untuk melakukan peluncuran, sehingga variabel akan diatur secara konsisten untuk lingkungan aplikasi jika tidak untuk lingkungan shell lokal.

bmike
sumber
4

Mengatur variabel lingkungan /etc/launchd.confadalah cara yang harus dilakukan: Setiap aplikasi yang diluncurkan setelah reboot oleh shell lokal, Finder atau Spotlight mewarisi variabel-variabel ini - Saya telah menguji ini secara luas dengan Mountain Lion 10.8.3.

2 peringatan:

halo
sumber
1
/etc/launchd.conftidak lagi didukung sejak Yosemite. Lihat apple.stackexchange.com/questions/106355/…
Franklin Yu
3

Coba launchctl setenv NAME VALUE. Saya tidak tahu apakah / apa bedanya dengan mengedit launchd.conf, tetapi berfungsi baik untuk saya di aplikasi Terminal dan GUI. Keterangan lebih lanjut.

Perhatikan ini tidak dapat bertahan di reboot. Inilah cara untuk memperbaikinya .

ryan
sumber
3
Halaman yang cukup panjang yang Anda tautkan di sini. Di mana tepatnya bagian yang relevan? Bisakah Anda memasukkannya langsung ke dalam jawaban Anda untuk memudahkan semua orang?
nohillside
2
oops, poin bagus, kupikir aku sudah memasukkan lebih dari satu fragmen di url itu. tetap.
ryan
1
Cara untuk bertahan hidup di reboot diberikan di sana menggunakan environment.plist yang berhenti bekerja di bawah Lion
user151019