Mountain Lion'da yeni başlatılan tüm uygulamalar için tek bir yerde PATH ortam değişkenini nasıl ayarlarım?


9

Farklı Sor konusunda, PATHortam değişkeni ve bir kabuk tarafından başlatılan uygulamalar, spot ışığı veya bulucu aracılığıyla nasıl ayarlanacağı ile ilgili birçok soru vardır (tipik sorular: Finder tarafından başlatılan uygulamalar için PATH nasıl ayarlanır veya PATH ortam değişkeni nasıl değiştirilir). .. ).

Cevaplar arasında değişir shbaşlatma komut için /etc/pathshiç /etc/launchd.conf. Mac OS X Mountain Lion 10.8.2 altındaki tüm uygulamalar için birleşik bir ayarın cevabından sonra PATHburadayım.

Yanıtlar:


14

Farklı seçeneklerle yapılan birçok denemeden sonra şu sonuca varıyorum:

Farklı yollarla başlatılan uygulamaları (kabuk komut dosyası, Finder ve Spotlight gibi) ayarlamanın birleşik bir yolu var mı PATH? Evet, hayır:

  • Hayır : PATHKabuk başlatma komut dosyalarında (örn. .bashrc) Ayarlanması yalnızca kabuklar tarafından başlatılan uygulamalar için geçerlidir.
  • Hayır : PATHŞu anki launchdişlemin ayarlanması launchctl setenv PATH <...>benim için hiç işe yaramıyor.
  • Evet : Ayar PATHiçinde /etc/launchd.conf(ve sistemi yeniden başlatmadan) uygun hale getirecek PATHSpotlight, Dock ve Bulucu ve daha sonra (yerel) kabukları tarafından başlatılan uygulamalarda görünür.
  • Hayır : Uzaktan çalıştırılan mermiler çevreyi miras almaz . (Bakın ... ssh üzerinden uzak kabuklar neden çevreyi devralmıyor .. )

Mermilerin kurulumu için notlar:

  1. Yerel mermilerin doğru çalışması için , kullanımının kapatılması önemlidir /usr/libexec/path_helper, çünkü içindeki varsayılan yollar /etc/paths, yolların sırasını değiştirebilir PATH. **

  2. Yerleştirmek için uzak kabukları Eğer yeniden ithalat gerek launchdkabuk içine çevreyi. Aşağıdaki gibi bir şey kullanın .bashrc:

# the vexatious path stuff
eval $(launchctl export)

Tüm sorunun talihsiz sonuçları şunlardır:

  • Bu birleştirilmiş ayarları kullanıcı başına almanın bir yolu yoktur. ( ~/.launchd.confçalışmıyor.)
  • Home dizini genişletme et al gibi teknikleri kullanarak PATH'ı farklı kaynaklardan oluşturmanın kolay bir yolu yoktur.

Güncelleme: aracılığıyla Ayar YOLU /etc/launch.confyok değil kabukları için çalışmak giriş Uzaktan ssh aracılığı (çünkü varsayalım sshdonun ebeveynden devralan çevresini geçmez launchdçocuk kabuğuna.). - Cevabı buna göre düzenleyeceğim.
halloleo

Yanıt, uzak kabuklar için bir çözümle güncellendi.
halloleo

1
Mükemmel cevap; Aşağıdaki gibi Launchd ortamının kaynak kolaylaştırabilirsiniz: eval "$(launchctl export)".
mklement0

Düzenlemenin kolay bir yolu, /etc/launchd.confsadece sudo -e /etc/launchd.conf(vi'ya aşina iseniz) veya EDITOR=nano sudo -e /etc/launchd.conf(kalıcı olmayan bir düzenleyiciyi tercih ediyorsanız) çalıştırmaktır.
nohillside

3

Önceki cevabı genişleterek, içindeki yolu değiştirmek /etc/launchd.confiçin aşağıdakileri yapmanız gerekir.

  1. Yönetici ayrıcalıklarına sahip olduğunuzdan emin olun.

  2. Aşağıdaki içeriğe sahip, ihtiyaçlarınıza uyacak şekilde değiştirilmiş yeni bir metin dosyası oluşturun:

    setenv PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/Users/YourUserName/bin
    
  3. Kendine sakla ev dizininde olarak launchd.conf.

  4. Terminal.app (veya en sevdiğiniz yedek yerine) açın ve şunu yazın:

    sudo mv ~/launchd.conf /etc

    sudoKomutu önceki kullanımınıza bağlı olarak kısa bir "ne yaptığınıza dikkat edin" mesajı alabilirsiniz, ancak her iki durumda da şifrenizi girmeniz gerekir. Tüm komut, dosyayı /etcörneğin TextEdit'e kaydederken doğrudan erişilemeyen dizine taşımaktır . sudo("Süper Kullanıcı DO" kısaltması) kullanılır, çünkü bu dizine Yönetici ayrıcalıkları yazmak gerekir.

  5. Bilgisayarını yeniden başlat.

Ve hepiniz hazır olmalısınız. İyi şanslar!


Ayrıntılar için teşekkürler, ancak soru nasıl değiştirileceğinin yolları değillaunchd.conf , tüm uygulamaların aynı PATH değişkenini birleşik bir şekilde nasıl elde ettiği ile ilgiliydi.
halloleo

Doğru, ama aslında PATHGUI uygulamalarımın nasıl ayarlanacağını anlamaya çalışarak soruyu araştırdım ve hangi fakir ruhların değişikliği nasıl etkileyeceğini
bilmese de

Burada geçerli bir noktanız var; yine de bence bilgilerinizi cevaba entegre etmek daha iyi bir seçenek. - Ben bu yorum iş parçacığı bir meta tartışma haline geldi düşünüyorum, bu yüzden meta.stackoverflow üzerinde ek bir cevap ile ne yapmak
halloleo

1
aslında, bu meta.apple.stackexchange.com'da olmamalı mıydı?
MattDMo

Gerçekten de, meta.apple.stackexchange.com doğru yer olurdu. Ben sadece var olduğunu bilmiyordum ...
halloleo

-2

Sen verebilir https://github.com/ersiner/osx-env-sync bir deneyin.

Bu kolları hem komut satırı ve GUI uygulamaları bir gelen tek bir kaynaktan . Ve OS X'in (Yosemite) en son sürümü ile çalışır .


Hangi sadece çalışmıyor diyor biraz kullanarak diğer yanıtı otomatikleştirir örneğin launchctl setenv PATH <...>
user151019

@Mark Bunun burada bir cevabın otomatik adımlarını atmasıyla bir ilgisi yok. Bu bir Başlatma Aracısı kullanır. Denemenizi öneririm.
Ersin Er

Kabul edilen çözüm launchdsistemi de kullanır . Çözümünüz, kabul edilen yanıtta belirtilen sorunların aynısına sahiptir.
halloleo

@halloleo Gerçekten denediniz mi? Ve OS X'in hangi sürümünde?
Ersin Er
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.