Mac OS X, $ PATH değerini nasıl belirler?


12

$ PATH nasıl ayarlanabilir hakkında temel bir anlayış var, ama tamamen Mac OS $ PATH eklenecek tüm yolları nereden alır açıklayan bir belge var mı? Ben gibi şeyler farkındayım /etc/profile, /etc/pathsve /etc/profile.d, ama sonunda $ PATH değerini etkileyen diğer komut vardır? Ayrıca giriş yapmayan ve giriş kabukları ( .bashrc, .bash_profile) arasında çok tanıdık değilim, ancak temel farklılıkların farkındayım.

Yanıtlar:


9

Genellikle, PATH'iniz kabuk tarafından ayarlanır. Bash için her şey kılavuzda açıklanmıştır . Ayrıca parçayı açabilir man bashve atlayabilirsiniz INVOCATION.

Etkileşimli bir giriş kabuğu olarak veya --login ile çağrılır

Bash etkileşimli bir giriş kabuğu olarak veya --login seçeneğiyle etkileşimli olmayan bir kabuk olarak çağrıldığında, dosya varsa / etc / profilinden komutları okur ve yürütür. Bu dosyayı okuduktan sonra bu sırayla ~ / .bash_profile, ~ / .bash_login ve ~ / .profile arar ve var olan ve okunabilir olan ilk komutları okur ve yürütür.

Etkileşimli, giriş yapmayan bir kabuk olarak çağrılır

Oturum açma kabuğu olmayan bir etkileşimli kabuk başlatıldığında, Bash bu dosya varsa ~ / .bashrc'deki komutları okur ve yürütür. OS X'te ayrıca, path_helperiçeriğini okuyan /etc/paths.dve bunları yolunuza ekleyen var.

Buradaki anahtar, OS X'te Terminal'in varsayılan olarak bir oturum açma kabuğu açmasıdır; Linux'ta ise kabuklar genellikle oturum açma dışı kabuklar olarak başlatılır. Josh Staiger, giriş yapmayan kabuklara karşı iyi bir açıklamaya sahiptir .

Yani, yolları ayarlayabileceğiniz sadece bu üçü vardır:

  • /etc/profile(hangi arar path_helper)
  • /etc/pathsve /etc/paths.d(denilen path_helper)
  • kabuk yapılandırma dosyanız ( .bash_profile)

Kısa ve bilgilendirici cevap için teşekkürler. Sanırım anlıyorum, hangi senaryoların / eserlerin $ PATH'ı o zaman etkiler. Yani bu /etc/profileesas olarak bash tarafından kullanılan bir komut dosyası mı? Diğer mermilerle ilgili deneyimlerim yok, ancak farklı bir yapı izlediklerini varsayıyorum?
Psiko Punch

/etc/profileÇoğu (? Değil% 100 emin) kabuklarla kullanılır. Bu yüzden PATH'ler gibi her yere istediğiniz şeyleri koymak iyi bir seçimdir. Bash .bash_dosyaları okurken Zsh .zshrc, başkalarına ek olarak okur . Kabuğa bağlıdır.
slhck

"OS X'te ek olarak, /etc/paths.d içeriğini okuyan ve bunları yolunuza ekleyen path_helper vardır." Hayır, path_helperbir değil interaktif olmayan giriş kabukları (ne de etkileşimli olmayan kabukları) çağrısında bulundu. Aslında, etkileşimli giriş kabukları için çağrılır /etc/profile.
Maggyero

8

Yollarının /etc/pathsve /etc/paths.d/*tipik olarak ilave edilir PATHile path_helper . path_helperçalıştırılır /etc/profile, bu nedenle bash etkileşimli bir giriş kabuğu olarak çağrıldığında çalıştırılır, ancak bash girişsiz bir kabuk veya etkileşimli olmayan kabuk olarak çağrıldığında çalıştırılmaz.

/etc/paths/usr/local/binsonunda varsayılan olarak içerir ve varsayılan /etc/paths.d/olarak boştur.

Terminal ve iTerm 2, varsayılan olarak giriş kabukları olarak yeni kabuklar açar ve bilgisayarınıza ssh yaptığınızda kabuk da bir oturum açma kabuğudur. Diğer platformlardaki birçok terminal emülatör tmuxve Emacs'daki kabuk modu, giriş yapmayan kabuklar olarak yeni kabuklar açar.

Bu satırı ekledim /etc/launchd.conf:

setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin

PATHKök başlatma işleminin değerini değiştirir . Değer, kullanıcı başına başlatma işlemleri de dahil olmak üzere diğer tüm işlemler tarafından devralınır. Değişiklikleri /etc/launchd.confyeniden başlatarak veya launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.confişlemleri çalıştırarak ve yeniden başlatarak uygulayabilirsiniz .

OS X'te, ~/.profilegrafik olarak oturum açtığınızda okunmaz. Her iki takdirde ~/.bash_profileve ~/.profileexist, bash okumuyor ~/.profileya.

~/.MacOSX/environment.plist 10.8'de çalışmayı bıraktı.

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.