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.