it-swarm-tr.com

OS X'te global PATH ortam değişkenini nasıl ayarlarım?

Tüm kullanıcı kabukları ve GUI uygulamaları aynı PATH ortamını elde etmek için OS X'teki global PATH ortam değişkenine eklemek istiyorum.

Shell 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 / etc/launchd.conf içinde yeniden tanımlamaktır:

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

Aslında launchd.conf İçinde PATH'e eklenmenin bir yolunu bulamadım.

Bu yöntem hakkında biraz endişeliyim, ancak şimdiye kadar işe yarayan tek şey bu. Daha iyi bir yol var mı?

102
lajos

palmer'ın GUI bilgisi doğrudur, ancak Kabuk tarafından görülen yolu değiştirmenin daha sürdürülebilir bir yolu vardır. Gibi mediaslave dedi , /etc/paths, ancak daha iyisi /etc/paths.d/ içinde bir yol vardır ve tüm kabukları yolu doğru şekilde oluşturur.

Ö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
72
cogg

/etc/launchd.conf

launchd.conf dosyası ** OS Xv10.8 (Mountain Lion) ve v10.9 (Mavericks) üzerinde hem komut satırı hem de GUI uygulamaları için çalışacak tek tam çözümdür ), tüm kullanıcılar için GUI ve konsol uygulamalarıyla birlikte çalışacak.

Sudo touch /etc/launchd.conf
Sudo nano /etc/launchd.conf

Ekle

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

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

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

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

  • environment.plist Spotlight üzerinden 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 yanıt, Mac OS X'de ortam değişkenlerini ayarlama ile aynı soruya dayanmaktadır.

48
sorin

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

Ortam değişkenleri oturum açıldığında ayarlandığından, launchctl öğesinde bunu yapmaya çalışmak işe yaramaz; Shell oturumu dışında Unix'te sistem çapında mevcut değillerdir.

Yani eklemek isteyeceksiniz

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. Bir .MacOSX/environment.plist dosyası her kullanıcının ana dizininde. .MacOSX dizini varsayılan olarak bulunmayacaktır, bu yüzden oluşturmanız gerekir.

Dosyanın biçimi şöyledir:

<?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>

environment.plistApple'ın sitesinde .

7
palmer

Global yolunuzu /etc/paths, her satıra bir yol.

Sudo nano /etc/paths seni oraya götürmeli.

3
manumoomoo

OS X'teki path_helper Komut satırı yardımcı programının kılavuz sayfasına baktınız mı? Ben yardımcı olabilir düşünüyorum bir SO ilgili biraz ilgili sor yanıtladı.

1
ayaz

Hiç kimse en basit ve en zarif yolu kapalı emin değilim. En azından Mac OS Xv10.6 (Kar Leoparı).

[/etc/|~/.] Dosyalarındaki [profile|bashrc] İle uğraşmak işe yarayabilir, ancak bu bir hack'tir. /etc/paths.d/ Dizini:

  • En sevdiğiniz editöre Sudo.
  • *name* Adlı /etc/paths.d/ Adlı yeni bir dosya oluşturun.

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

    eval '/usr/libexec/path_helper -s`
    

    profile veya bashrc 'a gidin ve gitmek için iyi olmalısınız.

1
noboomu

Niçin kullanacağınızdan emin değilim /etc/launchd.conf aksine /etc/profile - ama ben Mac OS X konusunda uzman değilim - işe yaradığından eminim, ama launchdinit için Mac OS X uygulaması/değiştirilmesidir - Mac OS X kafamı karıştırıyor.

Her neyse, setenv PATH "$PATH:/more/paths:/and/more/paths" çalışacak (tcsh) ve bourn Shell eşdeğeri export PATH="$PATH:/more/paths:/and/more/paths" - launchd 'ın belirli bir Shell ile nasıl ilişkili olduğu hakkında hiçbir fikrim yok.

Sanırım daha fazla soru sordum sonra cevapladım =)

0
Xerxes

Launchd'un bunu kabul edip etmediğinden emin değilim, ama deneyin:

setenv PATH "$ PATH:/yolum"
0
user1686