Saya ingin menambahkan variabel lingkungan PATH global pada OS X sehingga semua shell pengguna dan aplikasi GUI mendapatkan lingkungan PATH yang sama.
Saya tahu saya dapat menambahkan path ke skrip startup shell, tetapi pengaturan tersebut tidak diwarisi oleh aplikasi GUI.
Satu-satunya cara yang saya temukan sejauh ini adalah mendefinisikan kembali variabel lingkungan PATH di /etc/launchd.conf :
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path
Saya tidak tahu cara untuk benar-benar menambahkan ke PATH launchd.conf
.
Saya agak khawatir tentang metode ini, tetapi sejauh ini hanya ini yang berhasil. Apakah ada cara yang lebih baik?
Jawaban:
informasi GUI palmer sudah benar, tetapi ada cara yang lebih dapat dipelihara untuk memodifikasi lintasan yang dilihat oleh shell. Seperti kata mediaslave , Anda dapat mengedit
/etc/paths
, tetapi bahkan lebih baik Anda dapat memasukkan file teks/etc/paths.d/
yang memiliki path di dalamnya dan semua shell akan membangun path dengan benar.Misalnya, di sistem saya:
sumber
X11
(tidak terlalu menyakitkan daripada keluar sepenuhnya). Saya tidak mencobanyaTerminal
.$PATH
./etc/launchd.conf
The
launchd.conf
file **-satunya solusi lengkap yang akan bekerja untuk kedua baris perintah dan GUI aplikasi pada OS X v10.8 (Mountain Lion) dan v10.9 (Mavericks), salah satu yang akan bekerja dengan GUI dan konsol aplikasi, untuk semua pengguna .Menambahkan
Pada contoh di atas saya menambahkan
/usr/local/bin
nilai lingkungan default untuk PATH.Ingatlah bahwa file ini bukan skrip dan Anda tidak memiliki opsi untuk menggunakan substitusi. Juga, untuk menerapkan ini Anda perlu me-reboot.
Ingat, semua yang lain hanya solusi parsial:
environment.plist
tidak berfungsi untuk aplikasi yang diluncurkan melalui Spotlight./etc/paths
- hanya untuk konsol/etc/csh.cshrc
atau/etc/bashrc
- hanya untuk beberapa kerangJawaban ini didasarkan pada pertanyaan yang sama dari Pengaturan variabel lingkungan di Mac OS X .
sumber
/etc/launchd.conf
.Anda harus mengaturnya berdasarkan shell-by-shell; Shell bash dan csh-like tidak berbagi file konfigurasi dan sintaksis yang sama untuk menyesuaikan PATH.
Mencoba melakukan ini
launchctl
tidak akan berhasil, karena variabel lingkungan ditetapkan saat login; mereka tidak ada sistem yang luas di Unix di luar sesi shell.Jadi, Anda ingin menambahkan
ke
/etc/csh.cshrc
danuntuk
/etc/bashrc
.Jika Anda ingin variabel lingkungan dalam aplikasi GUI, itu lebih rumit. Anda harus membuat
.MacOSX/environment.plist
file di direktori home masing-masing pengguna. The.MacOSX
direktori kemungkinan besar tidak akan ada secara default, sehingga Anda harus menciptakannya.Format file seperti ini:
Lebih lanjut tentang
environment.plist
ada di situs Apple .sumber
~/.MacOSX/environment.plist
pendekatan tidak lagi didukung dan tidak ada pengganti di tingkat pengguna. Seluruh sistem dapat Anda gunakan/etc/launchd.conf
(dan ada solusi per - *. Aplikasi).Anda dapat mengedit jalur global Anda dengan menambahkan baris ke
/etc/paths
, satu jalur per baris.sudo nano /etc/paths
harus membawamu ke sana.sumber
Sudahkah Anda melihat halaman manual untuk
path_helper
utilitas baris perintah pada OS X? Saya menjawab pertanyaan yang agak terkait pada SO sehingga saya pikir Anda mungkin menemukan bermanfaat.sumber
Saya tidak yakin apakah ada yang membahas cara paling sederhana dan paling elegan . Setidaknya pada Mac OS X v10.6 (Snow Leopard).
Bermain-main dengan
[/etc/|~/.]
dari[profile|bashrc]
file dapat bekerja, tapi itu sedikit dari hack. The/etc/paths.d/
direktori adalah cara untuk pergi:Buat file baru dengan nama
*name*
(jangan beri nama itu sesuatu yang sudah ada di sana)/etc/paths.d/
dengan jalur per baris:Lalu tambahkan
ke
profile
ataubashrc
, dan Anda harus baik untuk pergi.sumber
*name*
? Atau maksud Anda adilname
?Saya tidak yakin apakah launchd menerima ini, tetapi coba:
sumber
Saya tidak yakin mengapa Anda akan menggunakannya
/etc/launchd.conf
sebagai lawan/etc/profile
- tapi saya bukan ahli di Mac OS X - Saya yakin Anda yakin saya bisa menggunakannya, tetapilaunchd
apakah implementasi / penggantian Mac OS X untukinit
- Mac OS X membingungkan saya.Bagaimanapun,
setenv PATH "$PATH:/more/paths:/and/more/paths"
akan bekerja (tcsh), dan setara shell bourn adalahexport PATH="$PATH:/more/paths:/and/more/paths"
- Saya tidak tahu bagaimanalaunchd
terkait dengan shell tertentu.Saya pikir saya telah mengajukan lebih banyak pertanyaan kemudian saya telah menjawab =)
sumber