Finder tarafından başlatılan uygulamalar için PATH nasıl ayarlanır

Finder aracılığıyla başlatılan uygulamaların, .bash_profile 'de ayarlandığı şekilde PATH'a saygı göstermediği görülmektedir. Bu yüzden bir IDE'den (Intellij) kod çalıştırmaya çalıştığımda, normalde Terminal'deki yoluma eklenen /usr/local/bin programlarına artık erişemiyorum.

Görünüşe göre .MacOSX/environment.plist bunu yapmanın yolu oldu, ama hayır Aslan daha uzun süre çalışır.

Finder ile başlatılan uygulamalar için PATH 'i nasıl ayarlayabilirim?

63
Kabul ettiğiniz çözümün 10.8'de çalıştığına emin misiniz?
katma yazar Greg, kaynak
@SorinSbarnea (Bunun eski olduğunu biliyorum ama) şu anda kabul edilen cevabın çalıştığını doğrulayabilirim. OS X 10.8.3, önerilen dock hack'i yeniden başlatma . (Ancak, önemli olması durumunda $ PATH yerine farklı bir ortam değişkeni ayarlıyorum.)
katma yazar lorenzog, kaynak
ayrıca bakınız << a href = "http://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set/36282543#36282543>" title = "ortam değişkenleri ayarlanmış mac tutulması" stackoverflow.com/questions/829749/… ;. Bu hemen hemen bir kopyası.
katma yazar chadrico, kaynak

7 cevap

10.7’de ve 10.8’de değilseniz, aşağıdaki çözüm iyi sonuç verir:

Tutulma ile aynı problemi yaşadım, fakat şimdi ekledim; .bash_profile ’a kadar olanları ve çalıştı.

export PATH=some_path:another_path
launchctl setenv PATH $PATH

Orijinal yolu bozulmadan kullanmak istemeniz durumunda

p=$(launchctl getenv PATH)
launchctl setenv PATH /my/new/path:$p

bunun yerine (veya yalnızca launchctl setenv PATH/my/new/path: $ (launchctl getenv PATH) ).

Note: Changing the launchctl PATH will not take effect until the Dock is "restarted". A new Dock process will automatically start after the current one is killed with the command:

killall Dock
32
katma
Bu benim için 10.12'de çalışır, ancak yalnızca bir kez. Makineyi yeniden başlattıktan sonra etkiler kaybolur.
katma yazar judith, kaynak
Benim için de işe yaramıyor (10.8.1)
katma yazar Andrew Dunaway, kaynak
Hala benim için OS X 10.8'de tutulma ile çalışıyor, bu yüzden neyi yanlış yaptığınızı bilmiyorum?
katma yazar Manrico Corazzi, kaynak
Ve IDE'nizi ikinci cevabım olarak ayarladınız mı? Şimdiye kadar 10.8 sürümün hiçbirinde sorun yaşamadım (10.8.0, 10.8.1 ve 10.8.2) ve açıkladığım kurulumu kullanıyorum.
katma yazar Manrico Corazzi, kaynak
Sadece kendim için konuşabilirim, ancak tarif edilenler hala benim için 10.9'da çalışıyor - ve aynı zamanda yaklaşan 10.10'da da çalışıyor.
katma yazar Manrico Corazzi, kaynak
Bu OS X 10.8’de çalışmaz - Eclipse ve IntelliJ ile denendi - bunlardan set | grep PATH çalıştırarak her zaman PATH =/usr/bin:/bin:/usr/sbin/sbin
katma yazar Greg, kaynak
Sanırım çalışmaya devam edebilmesi için yeniden başlattıktan sonra komutları tekrar çalıştırmanız (ideal olarak otomatik olarak).
katma yazar Ehtesh Choudhury, kaynak
launchctl 'ı çalıştırdıktan sonra dock'u yeniden başlatmayı deneyebilirsiniz: osascript -e' uygulamanın "Dock" çıkmasını söyle '. Bu benim için düzeltmek gibiydi.
katma yazar Ochado, kaynak
Ayrıca bir kabuk (Terminal üzerinden) başlatıncaya kadar launchctl varsayılan yola sahip olacak ve özelleştirilmiş yol kullanılamayacak. Bu, neler olup bittiğini anlayana kadar bir şeyleri hata ayıklamaya çalışırken beni biraz zorladı. Bir kabuk açmadan önce Intellij'i başlattıysam, yol yanlış olurdu. Buradaki asıl çözüm, bir kullanıcı tarafından oturum açma kabuğu aracılığıyla değil, launchctl'yi sistem çapında yapılandırmaktır.
katma yazar nos, kaynak
Kullanarak sona erdi: "launchctl setenv PATH $ PATH". Mevcut launchctl yolunun "$ p" ile eklenmesi, bir kabuk açtığınızda yolun tekrarlanmasına neden olur.
katma yazar nos, kaynak
@ Dover8 Aynı şeyi 10.12.3'te görüyorum. Bu cevap işe yarıyor, ancak çözümü yeniden başlattıktan sonra.
katma yazar kthom, kaynak
10.9'da benim için işe yaramadı, hatta rıhtım yeniden başlattıktan sonra. /Etc/launchd.conf dosyasını düzenlemek ve yeniden başlatmak benim için işe yaradı. 'de genel yol belirleme serverfault.com/questions/16355/how-to-set-global-path-on-os‌ -x/& hellip;
katma yazar rheniytron, kaynak
launchctl setenv PATH, rıhtıma yeniden başlatmadan veya yeniden başlatmadan 10.10.4'te benim için çalışmıyor. İlginç bir şekilde launchctl getenv PATH ayarlamadan önce boştur.
katma yazar Martin Probst, kaynak
Harika! OS X 10.9.5'te bir cazibe gibi çalışıyor :)
katma yazar PieCot, kaynak
bu benim için 10.11.6'da işe yaramıyor
katma yazar MichaelChirico, kaynak

'Yeni' probleminize sorunuzu cevaplamak için başka bir cevap yazmaya karar verdim - çünkü örneklerle açıklamak daha kolaydır.

Ortam değişkenlerini, seçtiğiniz aracın (IDE) başlangıcında yüklemenin bir yolu, tutulmasıyla yapılabileceği gibidir - Sanırım, aracınızda da (IDE) benzer bir yapı olması gerektiğini düşünüyorum.

How it can be done in eclipse - https://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set

(çevre değişkenleri hakkında biraz yeniden yazılmış)

Create an empty text file called "eclipse.sh" in the Eclipse application bundle directory /Applications/eclipse/Eclipse.app/Contents/MacOS

Eclipse.sh dosyasını bir metin düzenleyicide açın ve aşağıdaki içerikleri girin:

#!/bin/sh

. ~/.bash_profile

logger "`dirname \"$0\"`/eclipse"

exec "`dirname \"$0\"`/eclipse" [email protected]

Terminalde, eclipse.sh kabuk betiğinin çalıştırılabilir bayrağını ayarlayın.

chmod + x /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.sh

Eclipse.app Info.plist'i açın ve CFBundleExecutable anahtarının değerini eclipse'den eclipse.sh olarak değiştirin.

MacOS X, Eclipse.app’in Info.plist’inin değiştiğini otomatik olarak algılamaz. Bu nedenle, lsregister komutunu kullanarak Terminal'deki LaunchService veritabanını güncellemeye zorlamanız gerekir:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app

Eclipse.app'i Dock'tan veya Finder'dan bir sonraki başlatışınızda ortam değişkenleri ayarlanmalıdır.

17
katma

Mountain Lion'da tüm /etc/paths ve /etc/launchd.conf düzenlemelerinin bir etkisi olmaz!

Apple Geliştirici Forumları diyor ki:

"Bir" LSEnvironment "içerecek şekilde .app'ın Info.plist dosyasını değiştirin.   İstediğiniz ortam değişkenlerini içeren sözlük.

     

~/.MacOSX/environment.plist artık desteklenmiyor. "

Bu yüzden doğrudan uygulamanın Info.plist 'ini düzenledi ("AppName.app" üzerine sağ tıklayın (bu durumda SourceTree) ve sonra " Paket içeriğini göster ")

Show Package Contents

ve yeni bir anahtar/dict çifti ekledi:

LSEnvironment

     PATH
     /Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/[email protected]/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:

(bkz: Apple’da LaunchServicesKeys Dokümantasyonu )

enter image description here

Şimdi App (benim durumumda SourceTree) verilen yolu kullanır ve git 1.9.3 ile çalışır :-)

Not: Elbette, Path girişini kendi özel yol ihtiyaçlarınıza göre ayarlamanız gerekir.

10
katma
Bu Info.plist, Maverics ve eclipse ile lauchd.conf, etc/paths vb. Çalıştıktan sonra, benim için çalışan tek şeydi. Aslında bu hemen işe yaramadı, iki şeyi hatırlamanız gerekiyor: 1. /System/Library/Frameworks/CoreServices.framework/Frameworks‌ /LaunchServices.fram‌ v -f /Applications/eclipse/Eclipse.app başka bir cevapta verilen şekilde, plist değiştirdikten sonra ve 2. tam yol ekledikten sonra mevcut PATH'i profil komut dosyalarınızdaki gibi kullanamazsınız.
katma yazar kolosan, kaynak
Bu doğru mu? Bazılarının açıkça eski, ancak bazıları son zamanlarda görünen, çelişkili bilgiler içeren birçok gönderi görüyorum. Zaten (10.8.2'de) bir /etc/launchd.conf a sahip değilim. Muhtemelen, kurallar uygulamalarının yollar için Info.plist dosyalarını kullanması gerektiğini belirtmese bile, diğer dosyaları kullanıyor olabilirler - /etc/launchd.conf , /etc/paths/ veya /etc/paths.d/* veya `~/.MacOSX/environment.plist. Daha sonra pratikte Mountain Lion'daki GUI uygulamalarının yollarının bu dosyalardan birine ayarlanabileceğini söylemek güvenli midir?
katma yazar Shashank Sawant, kaynak
Bu Sierra (10.12) üzerinde çalışır. Ancak, @JaakL tarafından belirtilen şekilde lsregister komutunu çalıştırmak gerekir.
katma yazar Alastair Harrison, kaynak

OS X 10.10 Yosemite'de bu komutu kullandım:

sudo launchctl config user path 

Onun tüm kullanıcılar için lansman PATH değerini ayarladığını unutmayın. Bu benim kullanım davam için iyi çalıştı. Etkilerin gerçekleşmesi için makinenizi yeniden başlatmanızın isteneceğini unutmayın.

9
katma
Bu cevap benim için çalıştı. Özellikle, Brew tarafından yönetilen yürütülebilir dosyaya erişmek için sudo launchctl config kullanıcı yolunu/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin ve yeniden başlatmam gerekiyordu.
katma yazar ilitirit, kaynak
Homebrew tabanlı uygulamalar için/usr/local/bin ekleyerek buradaki en iyi cevap budur. Millet lütfen bu cevabı oylayın! 10.11 ve 10.12'de de çalışır (kendim 10.13'te test edilmemiştir). Çoğu durumda environment.plist ile uğraşmanıza gerek yok.
katma yazar pbarney, kaynak
Bunun, oturum açıldığında yeniden açılmış (kapatıldığında açık olan) PATH ortam değişkenini etkilemesi gibi görünmüyor.
katma yazar DougN, kaynak
bu benim için çalıştı, kabul edilen cevap ise
katma yazar MichaelChirico, kaynak

Mac OS X 10.8.4, Mountain Lion'da, yol ortamı bu dosyada listelenen yolları içerir:

/etc/paths

Bu dosyayı, aşağıdaki komutu kullanarak vim gibi bir komut satırı aracı kullanarak düzenleyebilirsiniz:

sudo vim /etc/paths
3
katma

Mountain Lion'da (10.8.4), $ PATH bir şekilde özel olarak ele alınır. launchctl setenv PATH/your/path:/here , daha sonra Dock'tan veya Dock'tan başlatılan Terminal.app veya Emacs.app örneklerinde $ PATH üzerinde bir etkiye sahip değildir. Finder (oysa launchctl setenv SPONG foo iyi çalışıyor). Ayrıca $ HOME/.launchd.conf çalışmıyor. /etc/launchd.conf PATH’i her yerde doğru şekilde ayarlamamı bulduğum tek yol. Maalesef, orada $ HOME gibi envarlar kullanılamıyor, bu yüzden dizüstü bilgisayarımdaki tüm kullanıcılar $ PATH /Users/nb/bin değerine sahipler. >. Bu sadece benim, umrumda değil.

1
katma
Terminal işleminin belirlediğiniz PATH değerini aldığını bulmalısınız, ancak: yeni bir terminal oluşturduğunuzda bir giriş kabuğu başlatır, ki - bash kullanıyorsanız - /etc/profile , PATH öğesini /usr/libexec/path_helper öğesinden döndürülen değere ilklendirir. Kabuk> Yeni Komut… 'u seçip env (bir kabukta değil) çalıştırmayı seçerseniz, PATH ' ı başlatmak için ayarladığınız değer olduğunu bulmalısınız. .
katma yazar imallett, kaynak

~/.Profile veya ~/.bash_profile veya ~/.zprofile (zsh için) 'de yolu ayarlamayı deneyin. Bu benim için VimR ile çalıştı - limandan fırlatıldığında PATH'i okumak değildi, fakat terminalden başlatıldığında işe yaradı. Bu arada OSX 10.11'de çalışıyordum.

I don't have a good enough handle on this to give you a great explanation of why it works, there are plenty of explanations online about the different config files and what they do: https://stackoverflow.com/questions/415403/whats-the-difference-between-bashrc-bash-profile-and-environment

Also, see a similar discussion here: https://stackoverflow.com/questions/3344704/path-variable-not-properly-set-in-gvim-macvim-when-it-is-opened-from-the-finder/24542893#24542893

1
katma
Soru, Doc'tan başlatılan ve cevabınızın işe yaramadığını söylediğiniz Finder'ın lansmanıyla aynı olan uygulamalarda nasıl yapılacağını soruyor - ve bunun neden işe yaramadığını/tam olarak çalışmadığını tam olarak açıklayabiliriz.
katma yazar yoliho, kaynak