Nasıl kullanmadan GUI uygulamalar için mevcuttur, öyle ki Mac OS X'de ortam değişkenleri kadar bir dizi gelmez ~ / .MacOSX / environment.plist veya Giriş Hooks (bunlar beri edilir kaldırılmış )?
Nasıl kullanmadan GUI uygulamalar için mevcuttur, öyle ki Mac OS X'de ortam değişkenleri kadar bir dizi gelmez ~ / .MacOSX / environment.plist veya Giriş Hooks (bunlar beri edilir kaldırılmış )?
Yanıtlar:
Mountain Lion'da tüm /etc/paths
ve /etc/launchd.conf
düzenleme herhangi bir etki yaratmaz!
Apple'ın Geliştirici Forumları şunları söylüyor:
Msgstr ".app dosyasının Info.plist'ini, istediğiniz ortam değişkenleriyle" LSEnvironment "sözlüğünü içerecek şekilde değiştirin.
~ / .MacOSX / environment.plist artık desteklenmiyor. "
Bu yüzden doğrudan uygulamanın Info.plist
("AppName.app" (bu durumda SourceTree) sağ tıklayın ve sonra " Show package contents
") düzenledi
ve yeni bir anahtar / dikte çifti ekledi:
<key>LSEnvironment</key>
<dict>
<key>PATH</key>
<string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>
(bkz . Apple'da LaunchServicesKeys Belgeleri )
şimdi App (benim durumumda SourceTree) verilen yolu kullanır ve git 1.9.3 ile çalışır :-)
PS: Elbette Path girişini özel path ihtiyaçlarınıza göre ayarlamalısınız.
Info.plist
yürürlüğe girmesini görmek için Matthew tarafından verilen komutları da çalıştırmak zorunda kaldım .
Çözüm , eski giriş kancalarını taklit etmek için launchctl
bir Launch Agent ile birlikte işlevselliğini kullanır . Deposunu kullanan diğer çözümler launchd
için bu karşılaştırmaya bakın . Burada kullanılan başlatma aracısı / Library / LaunchAgents / konumunda bulunur :
<?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>user.conf.launchd</string>
<key>Program</key>
<string>/Users/Shared/conflaunchd.sh</string>
<key>ProgramArguments</key>
<array>
<string>~/.conf.launchd</string>
</array>
<key>EnableGlobbing</key>
<true/>
<key>RunAtLoad</key>
<true/>
<key>LimitLoadToSessionType</key>
<array>
<string>Aqua</string>
<string>StandardIO</string>
</array>
</dict>
</plist>
Önemli bir şey, başlatma aracısının mümkün olan en erken zamanda yürütülmesi için RunAtLoad anahtarıdır. Gerçek çalışma kabuk komut dosyası yapılır /Users/Shared/conflaunchd.sh okur ~ / .conf.launchd ve onu besleyen launchctl
:
#! /bin/bash
#filename="$1"
filename="$HOME/.conf.launchd"
if [ ! -r "$filename" ]; then
exit
fi
eval $(/usr/libexec/path_helper -s)
while read line; do
# skip lines that only contain whitespace or a comment
if [ ! -n "$line" -o `expr "$line" : '#'` -gt 0 ]; then continue; fi
eval launchctl $line
done <"$filename"
exit 0
Çağrısına dikkat path_helper
almak için PATH doğru ayarlayın. Son olarak, ~ / .conf.launchd şöyle görünür
setenv PATH ~/Applications:"${PATH}"
setenv TEXINPUTS .:~/Documents/texmf//:
setenv BIBINPUTS .:~/Documents/texmf/bibtex//:
setenv BSTINPUTS .:~/Documents/texmf/bibtex//:
# Locale
setenv LANG en_US.UTF-8
Bunlar launchctl
komutlardır, daha fazla bilgi için kılavuzuna bakınız. Benim için iyi çalışıyor (hala bir Snow Leopard adamı olduğumu belirtmeliyim), texstudio ve TeXShop gibi GUI uygulamaları kendi tex ağacımı görebilir. Geliştirilebilecek şeyler:
Kabuk betiğinin içinde bir tane #filename="$1"
var. Dosya adı, başlatma aracısı tarafından komut dosyasına bağımsız değişken olarak beslenmesi gerektiğinden, bu yanlışlıkla olmaz, ancak bu işe yaramaz.
Belirtildiği gibi burada (Alman ve bir ödeme duvarının arkasına!), Fırlatma ajan itsself komut dosyası koymak mümkündür.
eval
Kullanıcı tarafından sağlanan dizeleri ile kullandığından, bu çözümün ne kadar güvenli olduğundan emin değilim .
Bu yöntemi kullanarak MANPATH tanımının iyi çalışmadığını hatırlıyorum, ama emin değilim.
Apple'ın ∼ / launchd.conf dosyasına bir şeyler koyarak biraz benzer bir yaklaşım tasarladığı belirtilmelidir , ancak şu anda bu tarihe ve işletim sistemine desteklenmemektedir (bkz launchd.conf
. Globbing gibi şeylerin bu teklifte olduğu gibi çalışmadığını düşünüyorum. Ve elbette, bu dosyaları / Library / LaunchAgents / veya ~ / Library / LaunchAgents / dizininde bulunması gereken launch aracı dışında başka bir yere koyabilirsiniz .
Son olarak, Launch Agent'lar hakkında bilgi olarak kullandığım kaynaklardan bahsetmeliyim: 1 , 2 , 3 , 4 .
Güncelleme : Bu, şu anda 10.8 sürümünde çalışmaz. Uygulama bazında geçici çözümler burada ve burada açıklanmaktadır .
export PATH=.:"$(launchctl getenv PATH)"
, ~ / .bash_profile (diğer kabuklar için benzer şekilde) yazmanızı öneririm . path_helper
Kabuk betiğinde çağrıldığından bu mümkündür . OS X'teki PATH değişkeni hakkında daha fazla bilgi için bu yanıtı kontrol edin .
@Flori tarafından verilen cevap, plver dosyasını değiştirdikten sonra Terminal'de aşağıdaki komutları çalıştırmam şartıyla Maverick'te benim için çalışıyor
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
killall Finder
@ Percival-ulysses tarafından verilen cevap benim için şu küçük değişiklikle 10.9 Mavericks üzerinde çalışıyor: edit /Users/Shared/conflaunchd.sh betiği hemen önce exit 0
ve satırları ekle
killall Dock
killall SystemUIServer
Dock'u ve menü çubuğunu yeniden başlatmak için Bundan sonra Dock'tan veya Spotlight'tan başlatılan uygulamalar doğru PATH'yi devralır. PATH açısından kritik uygulamaları başlatmak için Finder'ı kullanırsanız, o killall Finder
zaman eklenebilir.
In .bash_profile
ben satırını kullanın
export PATH=`launchctl getenv PATH`
Terminal için PATH değerini ayarlamak için, PATH ~ / .conf.launchd dosyasından aynı yerden kontrol edilir .
Başka bir seçenek kullanmaktır /etc/launchd.conf
. Örneğin, PATH
bu satırı ekleyerek varsayılanı değiştirdim /etc/launchd.conf
:
setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
Değişiklikleri /etc/launchd.conf
yeniden başlatarak veya launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
işlemleri çalıştırarak ve sonlandırarak ve yeniden başlatarak uygulayabilirsiniz .
/etc/launchd.conf
İçindeki ayarlar hem kök başlatma işlemi hem de kullanıcı başına başlatma işlemleri için geçerlidir. İle belirlenen Çevre değişkenleri setenv
de /etc/launchd.conf
her ikisi tarafından gösterilir sudo launchctl export
ve launchctl export
.