$ PATH, OS X 10.6 Snow Leopard'da nerede belirlenir?


139

echo $PATHKomut satırını yazıp alıyorum

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

Dosyam .bash_loginboş olduğu için bunun nerelere girdiğini merak ediyorum .

MacPorts'u yükledikten sonra içine bir sürü hurda yerleştirmekten özellikle endişe duyuyorum /opt. Bu dizinin normal bir Mac OS X kurulumunda bile olduğunu sanmıyorum.

Güncelleme: sayesinde jtimberman benim düzeltmek için echo $PATHaçıklama


5
SMcCandlish'in yorumu :easiest solution when you want to make a site-wide path change (e.g. to include /usr/libexec or whatever) is to edit /etc/paths . While the new /etc/paths.d/ thing is functional, it's actually more hassle than maintaining a single file. As others have hinted but not spelled out, if the path changes you want would be useful only for one user, it's best to make that change in the bash and/or tcsh config files in that user's home directory instead of system-wide.
Sathyajith Bhat

@Sathya, Bana /etc/paths.dyükleme komut dosyaları için yararlı görünüyor . Eğer kurulum betiğimin kurulu programı yola eklemesini istersem, bir dosyaya bırakabilirim /etc/paths.d. Yolu manuel olarak düzenlemek istersem, /etc/pathsdaha iyi bir seçenektir.
haydenmuhl

Çoğunlukla bu gönderiye
Pedro Lopes

Yanıtlar:


161

Başladığınızda bash, her giriş yaptığınızda aşağıdaki dosyaları okur. OS X'in amaçları doğrultusunda, her yeni bir Terminalpencere açtığınızda bu demektir .

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

bashKomut satırına yazarak yeni bir kabuk başlattığınızda ,.bashrc

OS X ayrıca, ~/.MacOSX/environment.plistgerekirse yollar dahil olmak üzere daha fazla ortam değişkeni ayarlamak için kullanılır.

Son olarak, /etc/pathsve /etc/paths.dde kabuk tarafından okunur.


/opt/local/bin~/.tcshrcMacPorts tarafından eklenir . Ayrıca içeriye baktığınızdan emin olun ~/.cshrc.


5
Görünüşe göre, ~/.MacOSX/environment.plistbazı insanlar için çalışmıyor. In OS X için Değişim Yolu klasörünü kullanarak alternatif /etc/paths.daçıklanmıştır. Bunu test etmedim.
Arjan

İçin +1 ~/.cshrc. Neden ~/.profileişe yaramadığını anlamaya çalışırken deliler gitti .
tomlogic

Bence bu cevap eksik. Hatalı (var olmayan) bir yolun nerede olduğunu anlamaya çalışıyorum: / usr / bin / local, kabuğumun şikayetçi olduğu ve bu dosyaların hiçbirinde olmadığı.
Tommy,

Sanırım yazsanız .bashrcda yazmasanız da okunur bash.
Xiao Peng - ZenUML.com

48

Dosyasına bir göz atın /etc/pathstarafından kullanılır, /usr/libexec/path_helpertarafından kullanılır, /etc/profile.

MacPorts sudo /etc/paths/opt/local/biniçin terminal penceresini kullanın ve yeniden açın.


25

Cidden, Leopard bize yol eklemek için yeni bir yol verdi. Eklemek istediğiniz yol bölümünü içeren bir dosya oluşturun ve /etc/paths.d içine koyun.

Bunu bir adımda yapmanın hızlı bir örneği:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

Aksi takdirde, /etc/paths.d dosyasına gidip dosyayı doğrudan buraya koyabilirsiniz. Her iki durumda da, bu dizindeki dosyalardaki yol parçaları varsayılan yola eklenecektir.

Bu aynı zamanda manpat için de geçerlidir.

İşte daha fazla ayrıntıya bir link:

ars technica: Nasıl kar leoparı PATH bir şey eklerim?

2. notta: MacPorts her şeyi tam olarak opt dizine koyar, çünkü Apple tarafından kullanılmaz. Bu şekilde çatışma olmaz. Rehberleri (mükemmel yazılmış, BTW) neden tercih edildiğini ve isterseniz varsayılanın nasıl değiştirildiğini açıklıyor.

MacPorts Kılavuzu


Çok havalı. Artık yalnızca o yola bağımlı uygulamaları profil dosyalarımızı kirletmeyecek hale getirmeliyiz ...
Daniel Beck

Sevdim. Basit!
Andrew Hedges

SMcCandlish'in yorumu :I have to concur that there's nothing weird or bad about MacPorts using /opt (likewise Fink uses /sw); trying to replace stock Mac BSD parts with bleeding-edge builds from external projects like these is a recipe for an unusable system that requires an OS reinstallation.
Sathyajith Bhat

Tek satır, dosya ekleme ve kolay kaldırma. Bunu sev. Teşekkürler leanne
Ibrahim Lawal

4

Yolunu göstermek için, $ PATH echo.

echo $PATH

Yolunuz, düzenleme ayarlamak için ~/.bash_profiledeğil, ~/.bash_login.


3

Ayrıca ssh tarafından belirlenen yol var .

Karşılaştırma echo $PATHiçin ssh localhost 'echo $PATH'. Ssh / etc / profile yazmazsa, / usr / libexec / path_helper çalışmaz ve / etc / pathts atlanır. Şimdi dene ssh localhost 'source /etc/profile; echo $PATH'. Yollar daha yakın olmalı. Kalan farklar büyük olasılıkla .bash_profile (ssh ile de atlanır) ve .bashrc'deki (ssh ile okundu) yol değişikliklerinden kaynaklanıyor olabilir.

Ssh yolunuzun normal terminal yolunuza benzer olmasını istiyorsanız source /etc/profile, .bashrc'nize ekleyebilirsiniz .


İpucu için teşekkürler! Tam olarak ssh ile çözüm arıyordum. svn + ssh, svnserve komutunu tam olarak bulamadı çünkü svnserve yolu .profile içinde, ancak .bashrc dosyasında değildi.
KIR

2

Her ikisinde de tanımlanabilir:

  • Sistem değişkenleri - /etc/paths
  • Kullanıcı değişkenleri - bkz. @Steve Folly'nin açıklaması

1

Aslında .profiledosya dosyanız yerine saklanır .bash_loginve MacPorts'un dosya yerine bunu kullanması yaygındır .bash_login.

Ayrıca, /optdizin genellikle MacPorts tarafından oluşturulur ve dosyalarını bu klasörde saklar.


1

İlgili dokümanlar için /usr/libexec/path_helperfayda, $ PATH için ilk bileşenleri alınmış /etc/pathsve varsayılan benziyor tarafından

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

OS-X Kar Leoparı için

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.