Setelah banyak percobaan dengan berbagai opsi saya menyimpulkan:
Apakah ada cara terpadu untuk mengatur PATHaplikasi yang diluncurkan dengan cara berbeda (seperti skrip shell, Finder, dan Spotlight)? Ya dan tidak:
- Tidak : Pengaturan
PATHskrip start up shell (mis. .bashrc) Hanya berfungsi untuk aplikasi yang diluncurkan oleh shell.
- Tidak : Pengaturan
PATHuntuk launchdproses saat ini via launchctl setenv PATH <...>tidak berfungsi untuk saya sama sekali.
- Ya : Pengaturan
PATHdalam /etc/launchd.conf(dan memulai ulang sistem) akan membuat aplikasi yang PATHterlihat 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/pathsdapat mengubah urutan jalur PATH. **
Untuk mengakomodasi shell jarak jauh, Anda perlu mengimpor kembali launchdlingkungan 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.conftidak berfungsi.)
- Tidak ada cara mudah untuk membangun PATH dari sumber yang berbeda menggunakan teknik seperti perluasan direktori home et al.
/etc/launch.conftidak tidak bekerja untuk kerang login ke jarak jauh melalui ssh (saya asumsikan karenasshdtidak lulus lingkungannya mewarisi dari induknyalaunchdke shell anak.). - Saya akan mengedit jawabannya.