SORU
2 Mart 2009, PAZARTESİ


Mac OS X ortam değişkenleri

Güncelleme: link aşağıda tam bir cevap yok. İki yerde yol veya değişken (GUI ve kabuk) ayarlamak zorunda berbat.

Kopyası değil: http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x

Çok kolay olduğu bir Windows arka plan gelen ve değiştir ortam değişkenleri (sadece Sistem Özellikleri ^ gidin . Gelişmiş >Çevre Değişkenleri), yalındır Mac OS 10.5 için görünmüyor. En referanslar /profile ya da ~/etc /update etmem gerektiğini söylüyor.profil. Bu Sistem Değişkenleri ve Kullanıcı Değişkenleri eşdeğerdir? Örneğin, nerede benim JAVA_HOME değişkeni ayarlamak gerekir?

DÜZENLEME:

Terminalden değişkeni olarak Tutulması gibi bir uygulama erişmek mümkün olmak istiyorum. Ayrıca,/çıkış bu etkili olması için yeniden başlatmak zorunda kalmayız.

CEVAP
31 Aralık 2010, Cuma


Ortam değişkenleri ayarlayabilirsiniz birkaç yer vardır.

  • ~/.profile: Tüm Programlar başlattı ayarlamak istediğiniz değişkenleri terminal (Linux aksine, bütün kabukları Terminal açıldı.unutmayın için bunu kullanın giriş kabukları uygulama).
  • ~/.bashrc: Bu kabukları giriş olmayan kabuklar için çağrılır. Devralınan ortam değişkenleri için atom ABSTRACT değil gereken kod adları ve diğer şeyler için bunu kullanın.
  • /etc/profile: Bu ~/önce yüklenir.profil, ama aksi takdirde eşdeğerdir. Değişken terminal programları makinedeki tüm kullanıcılar (bash kullanmak varsayarak) tarafından başlatılan uygulamak istediğiniz zaman kullanabilirsiniz.
  • ~/.MacOSX/environment.plist: Bu oturum açma loginwindow tarafından okunur. Tüm uygulamaları, GUI olanlar, o 10.5 servisleri tarafından başlatılan (10.6) hariç olmak üzere uygulanır. Sen çık gerektirir ve daha etkili olması için değişiklikleri için giriş. Bu dosya artık OS X 10.8 olarak desteklenmektedir.
  • kullanıcı launchd örnek: bu programlar kullanıcı arayüzü ve CLİ başlattığı için geçerlidir. launchctl setenv komutunu kullanarak herhangi bir zamanda değişiklikler uygulayabilirsiniz.Teoridegerekir koymak setenv komutları ~/.launchd.conf launchd olur oku bunları otomatik olarak ne zaman kullanıcı günlükleri, ama uygulamada destek için bu dosya asla uygulanmaktadır. Bunun yerine başka bir mekanizma oturum açma komut dosyası yürütmek için kullanın, ve komut dosyası launchctl launchd ortam ayarlamak için arama yapabilirsiniz.
  • Bu sistem başlatıldığında launchd tarafından okunur ve bir kullanıcı oturum açtığında. /etc/launchd.conf: Launchd kök süreçtir çünkü sistemde her süreci etkiler. Çalışan kök değişiklikleri uygulamak için sudo launchctl komutları yöneltme launchd.

Anlamak için temel şeyler vardır:

  • ortam değişkenleri çatallı anda bir sürecin çocuklar tarafından devralınmıştır.
  • root işlemi launchd bir örneğidir ve aynı zamanda kullanıcı her oturum için ayrı launchd bir örneği yok.
  • launchd değişkenleri launchctl; güncelleştirilmiş değişkenleri kullanarak o günden sonra, bu Çatallar tüm yeni işlemler tarafından devralınan mevcut ortamı değiştirmek için izin verir.

Bir çevre launchd ile değişken ayarlama örneği:

echo setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE | launchctl

Şimdi, değişken kullanan bir GUI uygulaması başlatmak, ve voila!

~/.launchd.conf çalışmıyor aslında geçici bir çözüm bulmak için, ~/Library/LaunchAgents/local.launchd.conf.plist aşağıdaki komut koyabilirsiniz:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>local.launchd.conf</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl < ~/.launchd.conf</string>    
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

Ardından ~/.launchd.conf içinde setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE koyabilirsiniz ve her girişte uygulanacak.

Bu şekilde launchctl içine bir komut listesi boru, boşluk içeren değerleri ile çevre değişkenlerini ayarlamak için mümkün olmayacaktır unutmayın. Eğer bunu yapmak istiyorsanız, launchctl arayabilirsiniz şöyle: launchctl setenv MYVARIABLE "QUOTE THE STRING".

Ayrıca girişte çalışan diğer programlar launchagent önce idam olabileceğini unutmayın, ve böylece ortaya koyuyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Justin Davis

    Justin Davis

    14 Ocak 2008
  • Techmoan

    Techmoan

    31 Mayıs 2009
  • Crossover

    Crossover

    18 HAZİRAN 2007