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ı?
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
/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çinBu yanıt, Mac OS X'de ortam değişkenlerini ayarlama ile aynı soruya dayanmaktadır.
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.plist
Apple'ın sitesinde .
Global yolunuzu /etc/paths
, her satıra bir yol.
Sudo nano /etc/paths
seni oraya götürmeli.
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ı.
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:
*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.
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 launchd
init
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 =)
Launchd'un bunu kabul edip etmediğinden emin değilim, ama deneyin:
setenv PATH "$ PATH:/yolum"