Setelah banyak percobaan dengan berbagai opsi saya menyimpulkan:
Apakah ada cara terpadu untuk mengatur PATH
aplikasi yang diluncurkan dengan cara berbeda (seperti skrip shell, Finder, dan Spotlight)? Ya dan tidak:
- Tidak : Pengaturan
PATH
skrip start up shell (mis. .bashrc
) Hanya berfungsi untuk aplikasi yang diluncurkan oleh shell.
- Tidak : Pengaturan
PATH
untuk launchd
proses saat ini via launchctl setenv PATH <...>
tidak berfungsi untuk saya sama sekali.
- Ya : Pengaturan
PATH
dalam /etc/launchd.conf
(dan memulai ulang sistem) akan membuat aplikasi yang PATH
terlihat pada aplikasi diluncurkan oleh Spotlight, Dock, dan Finder dan selanjutnya shell (lokal).
- Tidak ada : kerang jarak jauh dipanggil jangan tidak mewarisi lingkungan. (Lihat ... mengapa shell jarak jauh melalui ssh JANGAN mewarisi lingkungan .. )
Catatan untuk pemasangan kerang:
Untuk memfungsikan shell lokal dengan benar, penting untuk mematikan penggunaan /usr/libexec/path_helper
, karena jalur default di /etc/paths
dapat mengubah urutan jalur PATH
. **
Untuk mengakomodasi shell jarak jauh, Anda perlu mengimpor kembali launchd
lingkungan ke shell. Gunakan sesuatu seperti ini di .bashrc
:
# the vexatious path stuff
eval $(launchctl export)
Konsekuensi yang tidak menguntungkan dari keseluruhan masalah adalah:
- Tidak ada cara untuk memiliki pengaturan terpadu ini pada basis per pengguna. (
~/.launchd.conf
tidak berfungsi.)
- Tidak ada cara mudah untuk membangun PATH dari sumber yang berbeda menggunakan teknik seperti perluasan direktori home et al.
/etc/launch.conf
tidak tidak bekerja untuk kerang login ke jarak jauh melalui ssh (saya asumsikan karenasshd
tidak lulus lingkungannya mewarisi dari induknyalaunchd
ke shell anak.). - Saya akan mengedit jawabannya.eval "$(launchctl export)"
./etc/launchd.conf
adalah menjalankansudo -e /etc/launchd.conf
(jika Anda terbiasa dengan vi) atauEDITOR=nano sudo -e /etc/launchd.conf
(jika Anda lebih suka editor non-modal).Memperluas jawaban sebelumnya , untuk mengubah jalur masuk
/etc/launchd.conf
, Anda harus melakukan yang berikut.Pastikan Anda memiliki hak Administrator.
Buat file teks baru dengan konten berikut, dimodifikasi agar sesuai dengan kebutuhan Anda:
Simpan di direktori home Anda sebagai
launchd.conf
.Buka Terminal.app (atau pengganti favorit Anda) dan ketik:
sudo mv ~/launchd.conf /etc
Bergantung pada penggunaan
sudo
perintah sebelumnya, Anda mungkin mendapat pesan pendek "hati-hati melakukan apa yang Anda lakukan", tetapi Anda harus memasukkan kata sandi. Semua perintah yang dilakukan adalah memindahkan file ke/etc
direktori, yang tidak dapat diakses secara langsung saat menyimpan file di TextEdit, misalnya.sudo
(kependekan dari "Super User DO") digunakan karena hak administrator diperlukan untuk menulis ke direktori itu.Nyalakan kembali komputer Anda.
Dan Anda harus siap. Semoga berhasil!
sumber
launchd.conf
, melainkan tentang bagaimana semua aplikasi mendapatkan variabel PATH yang sama secara terpadu.PATH
aplikasi GUI saya, dan saya pikir saya akan membantu siapa pun jiwa miskin yang mungkin tidak tahu bagaimana melakukan perubahan ...Anda dapat mencoba https://github.com/ersiner/osx-env-sync .
Ini menangani baris perintah dan aplikasi GUI dari satu sumber . Dan ini berfungsi dengan OS X (Yosemite) versi terbaru .
sumber
launchd
sistem juga. Solusi Anda memiliki masalah yang sama seperti yang dinyatakan dalam jawaban yang diterima.