Sepertinya launchd.conf
tidak memuat variabel lingkungan saya lagi. Adakah orang lain yang memperhatikan hal itu?
Apakah ada solusi lain untuk menetapkan variabel lingkungan secara permanen?
environment-variables
osx-yosemite
osx-elcapitan
Omong kosong
sumber
sumber
Jawaban:
Buat
environment.plist
file~/Library/LaunchAgents/
dengan konten ini:Anda dapat menambahkan banyak
launchctl
perintah di dalam<string></string>
blokir.The
plist
akan mengaktifkan setelah sistem reboot. Anda juga dapat menggunakannyalaunchctl load ~/Library/LaunchAgents/environment.plist
untuk segera meluncurkannya.[Sunting]
Solusi yang sama juga berfungsi di El Capitan.
Xcode 7.0+ tidak mengevaluasi variabel lingkungan secara default. Perilaku lama dapat diaktifkan dengan perintah ini:
defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
[Sunting]
Ada beberapa situasi di mana ini tidak berhasil. Jika komputer dihidupkan ulang dan "Buka kembali jendela saat masuk kembali" dipilih, jendela yang dibuka kembali mungkin tidak melihat variabel (Mungkin mereka dibuka sebelum agen dijalankan). Juga, jika Anda masuk melalui ssh, variabel tidak akan ditetapkan (jadi Anda harus mengaturnya di ~ / .bash_profile). Akhirnya, ini tampaknya tidak berhasil untuk PATH di El Capitan dan Sierra. Itu perlu diatur melalui 'luncurkan pengguna config config ...' dan di / etc / paths.
sumber
UseSanitizedBuildSystemEnvironment
).[ Jawaban asli ]: Anda masih dapat menggunakan
launchctl setenv variablename value
untuk mengatur variabel sehingga diambil oleh semua aplikasi (aplikasi grafis dimulai melalui Dock atau Spotlight, selain yang dimulai melalui terminal).Tentunya Anda tidak akan ingin melakukan ini setiap kali Anda masuk.
[ Sunting ]: Untuk menghindari ini, luncurkan
AppleScript Editor
, masukkan perintah seperti ini:(Gunakan beberapa baris jika Anda ingin mengatur beberapa variabel)
Sekarang simpan (
⌘
+s
) sebagai format File: Aplikasi . Terakhir bukaSystem Settings
→ Pengguna & Grup → Item Login dan tambahkan aplikasi baru Anda.[ Jawaban asli ]: Untuk mengatasi semua variabel yang ingin Anda tentukan dalam skrip shell pendek, lihat jawaban sebelumnya tentang cara menjalankan skrip pada login MacOS . Dengan begitu skrip akan dipanggil saat pengguna masuk.
[ Sunting ]: Tidak ada solusi yang sempurna karena variabel hanya akan ditetapkan untuk spesifik itu pengguna tetapi saya berharap / menebak itu mungkin yang Anda butuhkan.
Jika Anda memiliki banyak pengguna, Anda bisa secara manual mengatur Item Login untuk masing-masing dari mereka atau menempatkan salinan com.user.loginscript.plist di masing-masing Perpustakaan / LaunchAgents lokal mereka direktori , menunjuk pada skrip shell yang sama.
Memang, tak satu pun dari solusi ini senyaman /etc/launchd.conf .
[ Edit Lebih Lanjut ]: Seorang pengguna di bawah ini menyebutkan bahwa ini tidak berhasil untuknya. Namun saya telah menguji beberapa mesin Yosemite dan tidak berfungsi untuk saya. Jika Anda mengalami masalah, ingatlah bahwa Anda harus memulai ulang aplikasi agar ini dapat berlaku. Selain itu jika Anda menetapkan variabel di terminal melalui ~ / .profile atau ~ / .bash_profile , mereka akan menimpa hal-hal yang ditetapkan melalui launchctl setenv untuk aplikasi yang dimulai dari shell .
sumber
Dimungkinkan untuk mengatur variabel lingkungan pada Mac OS X 10.10 Yosemite dengan 3 file + 2 perintah.
File utama dengan definisi variabel lingkungan:
Definisi layanan untuk memuat variabel lingkungan untuk aplikasi pengguna (terminal, IDE, ...):
Definisi layanan yang sama untuk aplikasi pengguna root:
Dan akhirnya kita harus mendaftarkan layanan ini:
Apa yang kita dapatkan:
Masalah / masalah:
Agar variabel env Anda diambil dengan benar oleh aplikasi setelah sistem dinyalakan ulang, Anda perlu:
Ini terjadi karena Apple menolak pemesanan eksplisit layanan yang dimuat, sehingga variabel env terdaftar secara paralel dengan pemrosesan "buka kembali antrian".
Tapi sebenarnya, saya reboot sistem saya hanya beberapa kali per tahun (pada pembaruan besar), jadi itu bukan masalah besar.
sumber
JAVA_HOME
), tetapi tidak untukPATH
variabelnya (lihat pertanyaan saya tentang bertanya berbeda ).launchd
, tetapi bukankah mungkin untuk memuat Daemon tersebut saat boot (yaitu sebelum masuk)? Itu harus menghindari semua masalah yang Anda sebutkan.Dikutip dari
Apple Developer Relations 10-Oct-2014 09:12 PM
Larutan:
sumber
/Library/LaunchDaemons
, dan bukannya menyuruhlaunchctl
menjalankanlimit
perintah, katakan untuk menjalankansetenv
perintah denganPATH
dan path path sebagai argumen.launchd
harus mengambilnya secara otomatis saat startup dan mendapatkan semacam modifikasi diri segera.<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
Berikut adalah perintah untuk memulihkan perilaku lama:
Sekarang Anda dapat menentukan perintah seperti
setenv JAVA_HOME /Library/Java/Home
di/etc/launchd.conf
.Diperiksa pada El Capitan.
sumber
Apa yang berhasil bagi saya (terinspirasi dari terima kasih):
Rekatkan ini ke /Library/LaunchDaemons/com.apple.launchd.limit.plist lalu reboot:
Jika Anda membutuhkannya langkah demi langkah:
⌘+v
). Ini akan memaksa batas untuk 16384 file per proses dan total 16384 fileesc
itu:wq
Saya harap ini membantu Anda.
sumber
Anda dapat mencoba https://github.com/ersiner/osx-env-sync . Ini menangani baris perintah dan aplikasi GUI dari satu sumber dan bekerja dengan OS X versi terbaru (Yosemite).
Anda dapat menggunakan substitusi path dan trik shell lainnya karena apa yang Anda tulis adalah skrip bash biasa yang bersumber dari bash. Tidak ada batasan .. (Periksa dokumentasi osx-env-sync dan Anda akan memahami bagaimana ini mencapai ini.)
Saya menjawab pertanyaan serupa di sini di mana Anda akan menemukan lebih banyak.
sumber
Solusinya adalah menambahkan variabel Anda
/etc/profile
. Maka semuanya berjalan seperti yang diharapkan! Tentu saja Anda HARUS melakukannya sebagai pengguna root dengan sudo nano / etc / profile. Jika Anda mengeditnya dengan cara lain, sistem akan mengeluh dengan profil / etc / yang rusak, bahkan jika Anda mengubah izin untuk melakukan root.sumber
Saya menambahkan variabel dalam ~ / .bash_profile dengan cara berikut. Setelah Anda selesai restart / logout dan login
CATATAN: tanpa memulai ulang / keluar dan masuk Anda dapat menerapkan perubahan ini menggunakan;
sumber