Bagaimana cara mengubah variabel lingkungan PATH ke OS X 10.8 Mountain Lion yang akan terlihat oleh aplikasi GUI? [duplikat]

14

Saya mencoba semua metode yang saya dengar untuk pengaturan variabel lingkungan pada OS X 10.8 tetapi tidak satupun dari mereka yang berfungsi.

Untuk menguji, jalankan skrip bash dari dalam aplikasi gui seperti Eclipse atau IntelliJ IDEA.

#!/bin/bash
set|grep PATH

Hal-hal yang saya uji dan yang tidak berfungsi bahkan setelah reboot:

  • /etc/paths dan /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (binary plist dibuat sesuai anjuran)
  • berjalan launchctl setenv PATH $PATHdari baris perintah, ini seharusnya memperbarui PATH untuk aplikasi GUI, setidaknya untuk sesi saat ini. Coba tebak, tidak ada perubahan.

Tampaknya PATH selalu PATH=/usr/bin:/bin:/usr/sbin:/sbinuntuk aplikasi GUI.

Sorin
sumber
Apakah Anda setuju dengan solusi yang menetapkan bash path atau apakah Anda benar-benar perlu mengubah nilai launchd dari path dasar untuk semua proses?
bmike
Saya perlu mengubah PATH yang digunakan oleh aplikasi GUI, untuk terminal / bash / ... Saya sudah memiliki satu set besar solusi yang berfungsi.
sorin
Saya tidak tahu mengapa eclipse dan lainnya tidak hanya mendukung variabel lingkungan runtime sehingga setiap pengembang java di Mac tidak perlu khawatir tentang pengaturan jalur atau sumber dalam variabel yang diinginkan di setiap proyek.
bmike
jawabannya lihat di sini: apple.stackexchange.com/questions/51677/...
Flori

Jawaban:

8

Dengan Mountain Lion /etc/launchd.confadalah tempat Anda harus mengatur Path aplikasi GUI. Ingat itu bukan file skrip; itu hanya mendukung launchctlperintah sehingga Anda harus menulis sesuatu seperti:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

Perhatikan juga bahwa itu tidak mendukung substitusi variabel lingkungan shell (seperti $PATH) sehingga Anda harus mengatur setiap jalur yang ingin Anda sertakan. Sebaiknya pertahankan jalur asli yang telah Anda sebutkan ( /usr/bin:/bin:/usr/sbin:/sbin).

Anda harus memulai ulang setelah mengubah (atau membuat) file agar perubahan diterapkan.

João Campos
sumber
Ini bekerja untuk saya di 10.8.2 untuk mengatur PATH yang dapat digunakan dengan Keyboard Maestro.
TJ Luoma
Halaman manual mengatakan bahwa Anda dapat menggunakan $ HOME / .launchd.conf tetapi itu tidak berhasil untuk saya. Menggunakan /etc/launchd.conf lakukan. Saya pada 10.8.4
pedz
Itu tidak bekerja untuk saya:-bash: setenv: command not found
Colas
Jika ada yang bingung seperti Colas, setenvadalah launchctlperintah, jadi Anda menggunakannya seperti launchctl setenv.
Jon Shier
3

Ini berfungsi jika Anda memanggil aplikasi GUI dari Terminal:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

masukkan deskripsi gambar di sini

Tidak benar-benar bagus atau nyaman tetapi itu berfungsi jika diperlukan.

nohillside
sumber
Segera TIDAK ADA JALAN. Saya tidak mau melakukan ini, itu hanya akan berfungsi kadang-kadang. Aplikasi ini juga dapat dimulai ketika Anda mengklik file.
sorin
2
Seperti yang saya katakan itu tidak benar-benar bagus tapi mungkin bekerja sampai Apple memperbaiki masalah (karena harus mungkin dengan launchctl).
nohillside
2

Saya memasak solusi lain, terinspirasi oleh patrix satu di sini , yang mudah-mudahan sedikit kurang menyakitkan. Buka Automator, pilih aplikasi sebagai target, dan pilih Execute Shell script(atau apa pun namanya, dalam bahasa Jerman itu adalah "Shell-Skript ausführen" seperti dapat dilihat di atas) sebagai tindakan. Dalam skrip, ketik saja

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Kemudian simpan semuanya di mana pun Anda inginkan, dan jika Anda perlu menjalankan Aplikasi Anda Di Sini , buka "aplikasi automator" yang dibuat.

Saya menguji dengan Terminalsebagai YourApplicationHere , dan melihat dengan launchctl exportyang FOO memang diatur ke bar . Saya harap ini bekerja untuk orang lain juga.

Akhirnya, jika Anda menggunakan solusi ini untuk variabel lingkungan Anda, alih-alih mengetikkan launchctlhal - hal di skrip shell, Anda bisa memanggil /Users/Shared/conflaunchd.sh(yang harus Anda make up terlebih dahulu, bersama dengan file yang menjelaskan variabel).

Ulysses Percival
sumber
-1

Seharusnya, launchctlmenyediakan PATHuntuk Aplikasi GUI. Untuk mengatur path ke path shell, tambahkan berikut ini ke file rc shell Anda setelah mengatur path Anda:

launchctl setenv PATH $PATH
ismail
sumber
1
Sayangnya ini tidak berhasil :-(
nohillside
Kami mengizinkan jawaban yang berupaya dengan iktikad baik untuk menjawab pertanyaan itu. Kami bahkan membiarkan jawaban yang salah dan membiarkan pemungutan suara berbicara untuk kebenaran. Mengomentari tanpa menjadikannya pribadi adalah cara terbaik untuk melubangi argumen yang salah daripada mengecilkan upaya untuk menjawab.
bmike