Mavericks'te sistem genelindeki PATH ortam değişkenini ayarlama


41

Önceki işletim sistemi sürümlerinde, sistem genelinde PATH ortam değişkenini /etc/launchd.conftüm uygulamalar için kullanılabilir hale getirmek için ayarlayabilir (yalnızca komut satırı için değil).

Mavericks'te bu artık kullanılmıyor gibi görünüyor.

Bunu mavericks'te yapmak için başka bir teknik var mı?

Yanıtlar:


50

Yosemite

/etc/launchd.confartık 10.10'da desteklenmiyor. Bakınız man launchctl:

/Etc/launchd.conf dosyasına alt komutların erken önyükleme sırasında çalışması için artık danışılmamaktadır; bu işlevsellik güvenlik nedeniyle kaldırıldı.

Şimdi örneğin bu pisti şu şekilde kaydedebilirsiniz ~/Library/LaunchAgents/my.startup.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

launchctl setenvSadece kullanıcı etki alanında başlatılan süreçler için geçerli böylece komut, kullanıcı olarak koştu olduğunu.

"Geri giriş yapılırken pencereleri yeniden aç" işaretliyse, bu yöntem giriş sırasında yeniden açılan uygulamalar için geçerli değildir.

Mavericks ve önceki

10.9 ve önceki sürümlerde, örneğin

echo setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin|sudo tee -a /etc/launchd.conf

ve değişiklikleri uygulamak için yeniden başlatın.

Diğer yöntemler. Diğer metodlar

/etc/pathsve /etc/paths.d/sadece (veya daha çok) kabuklara uygulanır. Çizgiler /etc/pathsve /etc/paths.d/*path, eklenir path_helper çalıştırılan, /etc/profile, /etc/zshenvve /etc/csh.login. /etc/pathsVeya düşünecek mermilerden başka hiçbir program tanımıyorum /etc/paths.d/.

~/.MacOSX/environment.plist 10.8 yılında çalışmayı durdurdu.


2
Evet; sadece varsayılan olarak mevcut değildir, ancak onu oluşturmak ve uygun girişleri ayarlamak yardımcı olur
mgol

Yosemite’de bazı programların /etc/launchd.conf’da belirttiğim PYTHONPATH’i göremediğini gördüm ve komut satırı düzeltmesini kullandım (cevabınızdaki ikinci paragraf) ve işe yaramadı gibi görünüyor. , sadece bana launchctl hata / yardım mesajı veriyor.
Tango

@Tango Cevabı değiştirdim. /etc/launchd.conf10.10'da çıkarıldı.
Lri

Şunu ekleyeceğim: bash ile uğraşırken, deneyimimin 10.10'da launchctl setenv'in hiçbir şey yapmadığı görülüyor. Env değişkenlerini ayarlamayı denedim, sonra değeri echo ile kontrol ettim ve hala tanımsız.
Tango

1
@Tango Çalıştırdıktan sonra terminal uygulamanızı kapatıp yeniden açın launchctl setenv. launchctl setenvmevcut süreçleri hiç etkilememiştir.
Lri

11

Çok daha kolay bir yol var. Klasöre bir metin dosyası yerleştirin /etc/paths.d/. Bu metin dosyasına istenen yolu VE yeni satırı girin. En iyi yol, her yol için yeni bir dosya oluşturmaktır.

Sistemimde, '/ usr / local / mysql / bin' metinli ve yeni satırlı MySQL adında bir dosya var.


Az önce @LauriRanta tarafından açıklanan zayıflığı ele almanın yolları olup olmadığı hakkında yeni bir soru gönderdim.
kuzzooroo

Sadece bir anakot: Bu yöntemi de kullandım, çünkü önerilen “OS X yolu”. Sistemin /etc/paths.d içinde sahip olduğum PATH dosyalarını tutarlı bir şekilde onurlandırması konusunda pek şansım olmadı ve genellikle ya dışa aktarma kabuk komutunu kullandım ya da PATH'leri her zaman işe yarayan ~ / .bash_profile dosyasına yerleştirdim, eğer sadece mevcut kullanıcı hesabım için ve Sistem geneli değil. Eğer /etc/paths.d içindeki PATH dosyaları her zaman sizin için çalışıyorsa, o zaman Sisteminizin benimkinden daha iyi davranmasını kıskanıyorum;)
chillin

Bu benim için yeni. Güzel!
Kuzen Kokain

3

Dosyadaki ortam değişkenlerini ayarlayabilirsiniz /etc/launchd-user.conf...

Mavericks'te, şu satırı kullanarak dosyadaki bir ortam değişkenini yapılandırabilirim:

setenv TEST test

Yeni bir önyüklemeden sonra $TEST/etc/launchd-user.conf'dan ayarlanır.

Düzenle

/Etc/launchd.conf adresindeki dosyanın sözdiziminin geçersiz olması mümkündür. Bu dosyanın içeriğini incelemeye gönderebilir misiniz?

Gördüğüm kadarıyla, /etc/launchd.conf içindeki PATH değişkenini ayarlamak normal çalışıyor. Ancak, launchdherhangi bir parametre genişletme gerçekleştirmez . Eğer bir giriş gibi varsa, bu nedenle setenv PATH $PATH:/usr/local/bin, sonuçta belirlenen yol "olarak ayarlanmış olacaktır $PATH:/usr/local/bin" (: değil nota değeri $ PATH "PATH ama metin")


Teşekkürler, yaşadığım sorun PATH'i ayarlamak, diğer ortam değişkenleri işe yarıyor gibi görünüyor.
Tom

@Tom - Yukarıda ek bir öneri sunduk
Eddie Kelley

1
gerçekten launch-user.conf veya launch- [current_user_name] .conf
Shanimal

'setenv TEST testi' içeren /etc/launchd.conf, Mavericks'teki Terminal'e yayılmaz.
Dave X

Hata! S / Mavericks / Yosemite /.
Dave X

0

Mavericks kurulumumda, /etc/launchd.conf dosyasına "setenv PATH blablabla" eklenmesi, yeniden başlatmanın ardından işe yaramadı

bu yüzden yeni yolumu, çalıştığı / etc / paths'un sonuna ekledim.


Benim için işe yaramadı. Yeniden başlattım, /etc/pathsistediğim her şeyi içeriyordum , ancak Sublime hala sadece orijinal PATH'i görüyor. Terminalden çalıştırırsam çalışır.
mgol

/ Etc / profilimdeki path_helper komutu, / etc / paths ve /etc/paths.d komutunu kullanarak /etc/launchd.conf
Dave X

0

Setenv PATH'ın benim için Terminal ve uygulamalar için hala işe yaradığını, ancak Finder'dan (Terminaldeki Birlikte Aç'ı tıklatarak) doğrudan başlatılan kabuk komut dosyalarında kırıldığını gördüm. Çok garip. /etc/launchd.confİşe yerleştirilen diğer çevre değişkenleri .

Doğrudan başlatılan kabuk komut dosyalarına göre düzeltmek için içinde PATH ayarını kopyaladım ~/.bash_profile.


0

Düzenleme /etc/paths.dveya kullanan .bash_profilebaşka birinden önerdi ancak olarak, benim için çalıştı vermedi (aslında upvote onun cevabı için geldi, ama ben ?! tekrar bulamadım), ben düzenlenebilir /etc/pathsbenim için çalışıyor hangi

Benim durumumda android-tool adbve androidterminal komutlarına sdk yollarını işaret ederek ( adbgünümüzde başka bir dizine taşındı) benziyorum.

/usr/local/bin
...
/Applications/adt-bundle-mac/sdk/platform-tools  //new entries
/Applications/adt-bundle-mac/sdk/tools

0

SWEET, bu XML'i ~ / Library / LaunchAgents / setenv.SVN.plist dosyasına ekleyerek, BBEdit’in / opt.

<clip>
<string>launchctl setenv PATH /opt/subversion/bin:$PATH</string>
<clip>

1
Bu dosyanın parametre genişletmeyi destekleyip desteklemediğine dair herhangi bir fikriniz var mı? Yolu ayarlamış olabilirim, böylece in / opt olanı tek olanıdır. Ve ben $ PATH kullanarak desteklemiyor olması muhtemel olduğunu düşünüyorum. Başlamak için mevcut yolu nasıl belirlersiniz?
Mark M

-1

Basitçe 'bin' (eklemek istediğiniz yol) yolunu / etc / paths dosyasına ekleyin - yeniden başlatın veya yeniden ekleyin !!!

sudo vi /etc/paths 
(create a file (paths file) if it does't exist, I am using 'vi' editor, you can use your own as super user )
then, add your bin directory path like below 

/usr/local/mysql/bin
/usr/local/apache-ant-1.9.3/bin
/usr/local/gradle-1.11/bin

dosyayı kaydedin ve yeniden tanımlayın ... umarım bu yardımcı olur

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.