Soru Genel PATH ortam değişkenini OS X'de nasıl ayarlayabilirim?


Tüm kullanıcı kabukları ve GUI uygulamalarının aynı PATH ortamını almasını sağlamak için OS X'deki genel PATH ortam değişkenine eklemek istiyorum.

Kabuk başlangıç ​​komut dosyalarındaki yola ekleyebileceğimi biliyorum, ancak bu ayarlar GUI uygulamaları tarafından devralınmıyor.

Şimdiye kadar bulduğum tek yol, PATH ortam değişkenini yeniden tanımlamaktır. /etc/launchd.conf:

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

Aslında PATH’a eklemek için bir yol bulamadım. launchd.conf.

Bu yöntem hakkında biraz endişeliyim, ama şu ana kadar işe yarayan tek şey bu. Daha iyi bir yolu var mı?


97
2018-05-31 19:08


Menşei


Görmek: stackoverflow.com/questions/347286 - rjmunro
Yosemite ve daha sonra, bkz. stackoverflow.com/questions/25385934/... - thSoft
Buradaki cevapların hiçbiri OP'nin sorusunu ele almıyor. Ancak thSoft tarafından yapılan yorum, paranın tam karşılığıdır! Belki de bu referanslı soruyla birleştirilmeli veya ilişkilendirilmelidir: stackoverflow.com/questions/25385934/... - Kevin Buchs


Cevaplar:


palmerın GUI bilgisi doğru, ancak kabuk tarafından görülen yolu değiştirmek için daha sürdürülebilir bir yol var. Sevmek mediaslave dedi ki, düzenleyebilirsiniz /etc/pathsama daha da iyisi bir metin dosyasını /etc/paths.d/ İçinde bir yolu var ve tüm kabuklar yolu doğru şekilde inşa edecek.

Örneğin, sistemimde:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin

70
2018-05-28 06:53



Güzel, teşekkürler! Not: Bu işlem, oturumu kapatmadan önce oturum açmanızı ve oturum açmanızı gerektirir. - weronika
@weronika: Çıkmayı ve yeniden başlatmayı yeterli buldum X11 (tamamen çıkış yapmaktan daha az ağrılı). Ben denemedim Terminal. - Peter Gluck
Terminal'e atıfta bulundum - haklısın, belirtmeyi unuttum. - weronika
Bu bilmek güzel, ancak OP'nin sorusu, bu mekanizmanın GUI uygulamaları için geçerli olmadığı sorusuna cevap vermiyor. OP bir aradı birleşik ona izin veren çözüm eklemek varsayılana $PATH. - mklement
Burada "sistemim" ile ne demek istiyorsun, @cogg? Hepimiz burada OS X kullanmıyor muyuz? Üzgünüz, ancak hala OS X için yeni yaşıyorum. OS X 10.7 kullanıyorum - ericn


/etc/launchd.conf

launchd.conf dosya ** hem komut satırı hem de GUI uygulamaları için çalışacak tek tam çözümdür OS X v10.8 (Dağ Aslanı) ve v10.9 (Mavericks), tüm kullanıcılar için GUI ve konsol uygulamaları ile çalışacak biri.

sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf

Eklemek

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Yukarıdaki örnekte ekledim /usr/local/bin PATH için varsayılan ortam değerlerine.

Bu dosyanın bir komut dosyası olmadığını ve ikameleri kullanma seçeneğiniz olmadığını unutmayın. Ayrıca, bunları uygulamak için yeniden başlatmanız gerekir.

Unutmayın, diğerleri sadece kısmi çözümlerdir:

  • environment.plist Spotlight aracılığıyla başlatılan uygulamalar için çalışmaz.
  • /etc/paths - sadece konsol için
  • /etc/csh.cshrc veya /etc/bashrc - sadece bazı kabuklar için

Bu cevap, aynı soruyu temel alır. Mac OS X'te ortam değişkenlerini ayarlama.


47
2018-06-04 20:30



Harika bir bulgu, ama soru zaten konuşuyor launchd ve nasıl olduğunu soruyor eklemek içindeki yolu. - cregox
Orijinal soruya kendinize "gerçek cevap" olarak işaret eden bir yorum eklediniz mi? - TJ Luoma
Bu sizin yardımsever - cevabınız tarafından ima edildi, ama sadece hecelemek için: OP'nin arzusu eklemek varsayılan yol için desteklenmez, çünkü diğer ortam değişkenlerini /etc/launchd.conf. - mklement
Global değil - / etc / profile path_helper komutunu çağırdığında ve / etc / paths ve /etc/paths.d/ adreslerinden PATH'ı yeniden oluşturduğunda komut satırı ortamı bunu iptal edecektir. - Dave X
göre apple.stackexchange.com/questions/106355/..., bu Yosemite veya daha sonra uzun bir çalışma değil - ericn


Bunu kabuk-kabuk şeklinde ayarlamanız gerekecek; Bash ve csh-benzeri kabuklar, PATH'yi ayarlamak için aynı yapılandırma dosyalarını ve sözdizimini paylaşmaz.

Bunu yapmaya çalışıyorum launchctl çalışmaz, çünkü ortam değişkenleri girişte ayarlanır; Bir kabuk oturumunun dışında Unix'te sistem çapında yoklar.

Yani eklemek isteyeceksin

setenv PATH "$PATH:/add/my/extra/path"

için /etc/csh.cshrc ve

export PATH="$PATH:/more/paths:/

için /etc/bashrc.

GUI uygulamalarında ortam değişkenleri istiyorsanız, bu daha karmaşıktır. Oluşturmak zorundasın .MacOSX/environment.plist Her kullanıcının ana dizinde dosya. .MacOSX dizin varsayılan olarak mevcut olmayacaktır, bu yüzden onu oluşturmanız gerekir.

Dosyanın biçimi şöyle:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

Daha fazla environment.plist  Apple'ın sitesinde.


7
2018-06-01 12:24



Ama ayarlar /etc/launchd.conf ayarlandığında etkili olur ... Hmmm ... / me karıştı. - Xerxes
Gerçekten mi? Orada hangi ortam değişkenini ayarlıyorsunuz? - palmer
Sadece OS X 10.8 gibi bir güncelleme: ~/.MacOSX/environment.plist Yaklaşım artık desteklenmiyor ve kullanıcı düzeyinde bir yedek yok. Sistem genelinde kullanabilirsiniz /etc/launchd.conf (ve * başına bir uygulama çözümü var). - mklement
OP'nin sorularına cevap vermiyor. - Kevin Buchs


Satır ekleyerek genel yolunuzu düzenleyebilirsiniz. /etc/pathssatır başına bir yol.

sudo nano /etc/paths Seni oraya götürmeli.


3
2017-09-03 18:04



Bu bilmek güzel, ancak OP'nin bu soruya GUI uygulamaları için geçerli olmadığı sorusuna cevap vermiyor. - mklement


Adam sayfasına bir göz attın mı? path_helper OS X'de komut satırı yardımcı programı? Bir cevap verdim SO ile ilgili biraz soru yararlı bulabileceğini düşünüyorum.


1
2018-06-01 12:50





Kimse örtülü olduğundan emin değilim en basit ve en zarif yol. En azında Mac OS X v10.6 (Kar Leoparı).

İle mesajlaşma [/etc/|~/.] arasında [profile|bashrc] dosyalar işe yarayabilir, ama bu bir hack. /etc/paths.d/ dizin gitmek için yoldur:

  • En sevdiğin editöre Sudo.
  • Adlı yeni bir dosya oluştur *name* (sadece içeride bulunan bir şey değil) /etc/paths.d/ satır başına bir yolla:

    /usr/X11/bin
    /Developer/usr/bin
    
  • Sonra Ekle

    eval '/usr/libexec/path_helper -s`
    

    için profile veya bashrcve gitmek için iyi olmalısın.


1
2018-01-31 07:22



Bu bilmek güzel, ancak OP'nin bu soruya GUI uygulamaları için geçerli olmadığı sorusuna cevap vermiyor. - mklement
Dosya adı tam anlamıyla mı *name*? Yoksa sadece demek istiyorsun name? - Peter Mortensen


Launchd bunu kabul ederse emin değilim, ama deneyin:

setenv PATH "$ PATH: / yolum / yol"

0
2018-05-31 19:26



Ne yazık ki bu işe yaramıyor. Launchctl'in çevre değişkenlerine kolayca erişmesi gibi görünmüyor. Ortam değişkenlerini almak için bir komut var, ancak nasıl kullanılacağı konusunda kesinlikle bir belge yok. - lajos