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


70

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

Görünüşe göre bunu .MacOSX/environment.plist yapmanın yoluydu , ama artık Lion'da çalışmıyor.

PATHFinder tarafından başlatılan uygulamaları nasıl ayarlayabilirim ?


Kabul ettiğiniz çözümün 10.8'de çalıştığına emin misiniz?
sorin

1
@SorinSbarnea (bunun eski olduğunu biliyorum ama) Kabul edilen yanıtın , benim için önerilen dock restart hack'ini kullandığımda da OS X 10.8.3'te çalıştığını doğrulayabilirim . (Ancak, farklı $PATHolması durumunda farklı bir ortam değişkeni
ayarlıyorum

ayrıca bakınız < stackoverflow.com/questions/829749/… >. Bu hemen hemen bir kopyası.
Philipp Kunz

Yanıtlar:


38

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, mesela aşağıdakileri takip ettim .bash_profileve ç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 sadece launchctl setenv PATH /my/new/path:$(launchctl getenv PATH)).

Not: Başlatma PATH PATH'ini değiştirmek, Dock "yeniden başlatılıncaya kadar" geçerli olmaz. Şu anki komut ile öldürüldükten sonra yeni bir Dock işlemi otomatik olarak başlayacaktır:

killall Dock

1
Ben: "launchctl setenv PATH $ PATH" kullanarak sona erdi. Mevcut launchctl yolunun "$ p" ile eklenmesi, bir kabuk açtığınızda yolun tekrarlanmasına neden olur.
Kafein Koma

4
Bu OS X 10.8'de çalışmıyor - Eclipse ve IntelliJ ile denendi - set|grep PATHonlardan PATH=/usr/bin:/bin:/usr/sbin:/sbin
kaçmak

1
Benim için de işe yaramıyor (10.8.1)
yokuş yukarı

4
Sen koşu sonrasında yuvası yeniden başlatmayı deneyebilirsiniz launchctl: osascript -e 'tell app "Dock" to quit'. Bu benim için düzeltmek gibiydi.
Ivan Andrus

2
Bu benim için 10.12'de çalışır, ancak yalnızca bir kez. Makineyi yeniden başlattıktan sonra etkiler kaybolur.
Dover8

19

'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ına 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.

Tutulmada nasıl yapılabilir - https://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set

(çevre değişkenleri hakkında az miktarda yeniden yazılmıştır)

Eclipse uygulama paketi dizininde "eclipse.sh" adlı boş bir metin dosyası oluşturun /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" $@

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

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.


Net ve doğru bir açıklama için +1 ve altı yıldan fazla bir süre sonra, bu hala High Sierra, 10.13.x ile çalışıyor.
dgnuff

16

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

sudo launchctl config user path <my path setting>

Onun tüm kullanıcılar için lansmanı PATH olarak 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.


Bu, oturum açma sırasında yeniden açılmış (kapatıldığında açık olan) uygulamaların PATH ortam değişkeni üzerinde etkili görünmüyor.
Brecht Machiels

4
Bu cevap benim için çalıştı. Özellikle, Brew tarafından yönetilen yürütülebilir dosyaya erişmek için, yapmalı sudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbinve yeniden başlatmalıydım.
JP

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). environment.plistÇoğu durumda uğraşmanıza gerek yok .
Mark Edington

kabul edilen cevap vermedi bu benim için çalıştı
MichaelChirico

11

Mountain Lion'da her şey /etc/pathsve /etc/launchd.confdüzenlemenin bir etkisi olmaz!

Apple Geliştirici Forumları diyor ki:

Msgstr "İstediğiniz ortam değişkenleriyle birlikte bir" LSEnvironment "sözlüğü içerecek şekilde .app'ın Info.plist dosyasını değiştirin.

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

Bu yüzden doğrudan uygulamanın düzenlemesini yaptım Info.plist("AppName.app" üzerine sağ tıklayın (bu durumda SourceTree) ve sonra " Show package contents")

paket içeriğini göster

ve yeni bir anahtar / dict çifti eklendi:

<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 Servisleri Anahtarlama Belgeleri )

görüntü tanımını buraya girin

Ş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.


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. /etc/launchd.confZaten (10.8.2'de) bile yok . Tahminen, kurallar uygulamalar değil devlet bile gereken yolları için onların Info.plist dosyaları kullanın, hala diğer dosyaları kullanıyor olabilir - /etc/launchd.conf, /etc/paths/veya /etc/paths.d/*, ya `~ / .MacOSX / environment.plist. O, o zaman söylemek güvenli mi pratikte , Mountain Lion GUI uygulamaları için yollar bu dosyaların herhangi ayarlanabilir olabilir?
orome, 3'13

2
Bu Info.plist, benim Maverics ve eclipse ile lauchd.conf, etc / paths vs denedikten sonra, benim için çalışan tek şeydi. Aslında bu da hemen işe yaramadı, iki şeyi hatırlamanız gerekiyor: 1. /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.appbaşka bir cevapta verildiği gibi çalıştır , değiştirmeyi değiştirdikten sonra ve 2. tam yol eklediğinde , mevcut PATH'i profil komut dosyalarınızdaki gibi kullanamazsınız.
JaakL

Bu Sierra'da çalışıyor (10.12). Ancak lsregister@JaakL tarafından belirtildiği gibi komutu çalıştırmak hala gereklidir .
Alastair Harrison

1

Dağ Aslanında (10.8.4), bir $PATHşekilde özel olarak ele alınır. Dock'tan veya Finder'dan başlatılan Terminal.app veya Emacs.app örnekleri launchctl setenv PATH /your/path:/hereüzerinde herhangi bir etkisi yoktur $PATH(bununla birlikte iyi launchctl setenv SPONG fooçalışır). Ayrıca $HOME/.launchd.confçalışmıyor. /etc/launchd.confPATH'i her yerde doğru bir şekilde ayarlamamı bulduğum tek yol bu. Ne yazık ki, biri $HOMEorada olduğu gibi envarları kullanamaz , bu yüzden dizüstü bilgisayarımdaki tüm kullanıcıların /Users/nb/binkendilerinde var $PATH. Bu sadece benim, umrumda değil.


Terminal işleminin belirlediğiniz PATHdeğeri topladığını bulmalısınız , ancak: yeni bir terminal oluşturduğunuzda, eğer - bash kullanıyorsanız - döndürülen değerin ilkini başlatan çalıştırılan bir giriş kabuğu /etc/profilebaşlatır . Eğer Shell> New Command… 'ı seçip çalıştırırsanız (bir kabukta değil), bunu launchd ile ayarladığınız değeri bulmalısınız . PATH/usr/libexec/path_helperenvPATH
Chris Sayfa

-1

~ / .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.

Size neden işe yaradığına dair harika bir açıklama yapmak için bu konuda yeterince iyi bir tanıtıcım yok, farklı yapılandırma dosyaları ve ne yaptıkları hakkında çevrimiçi birçok açıklama var: https://stackoverflow.com/questions/415403/ neyin-fark-arası-bashrc'de-bash-profil-ve-çevre

Ayrıca, burada benzer bir tartışmaya bakın: https://stackoverflow.com/questions/3344704/path-variable-not-properly-set-in-gvim-macvim-when-it-is-opened-from-the-finder/ 24542893 # 24542893


Soru, cevabınızın işe yaramadığını söylediğiniz Finder'ın lansmanıyla aynı olan ve Doc'un başlattığı uygulamalar için nasıl yapılacağını soruyor - ve bunun neden işe yaramadığını / tam olarak çalışmadığını açıklayabiliyoruz
user151019

-3

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

/etc/paths

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

sudo vim /etc/paths
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.