“Echo $ PATH” ve / etc / paths arasındaki fark nedir?


10

Ben echo $ PATH zaman bu olsun: Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools.

Bundan bazı yolları kaldırmak istiyorum, ancak komutu kullanarak dosyayı vim /etc/pathsaçtığımda, aşağıdaki sonuçları alıyorum:

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

/ Etc / paths dosyası $ PATH değişkeninden farklı mı?


Hangi OS X sürümü? Ben yok /etc/pathsbenimkinde ama koşuyorum 10.4.11ve işler muhtemelen o zamandan beri değişti
Fox

1
Ama uygun AskDifferent üzerinde bir yanıt , /etc/pathsvarsayılan üretmek için kullanılır $PATH, daha sonra değiştirebilir,
Fox

Varsayılan. Ancak kullanıcı kabuklarını başlattığında, ~/.bashrcveya gibi kabuklu diğer dosyalar tarafından değiştirilir~/.profile
Sergiy Kolodyazhnyy 14:18

Yanıtlar:


14

/etc/paths$PATHkabuk süreçleri için kullanılan öğelerin bir parçasıdır . Yeni bir Terminal penceresi açtığınızda, başlar bash:, çeşitli başlatma komut dosyalarını çalıştığı /etc/profileVE ~/.bash_profileYA (yani yaparsa yok) ~/.bash_login(yani yaparsa ya mevcut değil) VEYA ~/.profile. Bu komut dosyaları, kabuk ortamını da içerir $PATH.

Yaptığı şeylerden /etc/profilebiri, içindeki tüm dosyaları /usr/libexec/path_helperokuyan /etc/pathsve /etc/paths.diçeriğini ekleyen çalıştırılır $PATH. Ancak bu sadece bir başlangıç ​​noktasıdır; kendi başlangıç ​​komut dosyanız (varsa) ekleyebilir $PATH, düzenleyebilir, tamamen değiştirebilir vb.

Bana başlangıç ​​komut dosyanız (ve / veya çalıştırdığı şeyler), aldığı temel sete bir dizi girdi ekliyor gibi görünüyor /etc/paths. Başlangıcına "Kullanıcılar / kullanıcı adı / .node_modules_global / bin: /Users/mac/.node_modules_global/bin:" eklenir $PATH(yani, bu dizinler önce aranacaktır) ve ": / Users / mac / Library / Android / sdk / platform-tools: / platform-tools "sonuna eklenir. Bunları nelerin eklediğini tam olarak bilmek istiyorsanız, başlangıç ​​komut dosyanıza bakmanız gerekir.

BTW, bu kurulum işlemi $PATHyalnızca bash "login" mermileri için geçerlidir. Bir bash kabuğu tarafından yönetilen her şey $PATHondan miras alacaktır , bu yüzden muhtemelen aynı şeye sahip olacaktır. bash giriş yapmayan mermiler biraz farklı bir kurulum sürecini takip eder. Diğer mermiler ve bir mermiden hiç başlamayan şeyler (örn. Cron işleri) tamamen farklı olabilir $PATHs.


Giriş yapmayan mermiler için (örn /usr/local/bin/bash. Tarafından yüklenen brew, -largüman olmadan ) /usr/libexec/path_helperkullanılmadığını ve /usr/local/binvarsayılan olarak $PATH. path_helperBir komut dosyasında veya etkileşimli olarak kullanmak için komuttur eval $(/usr/libexec/path_helper).
Kyle Strand

0

Değişiklikleri kontrol etmek istediğim ilk yerler,

~/.profile
~/.bashrc
~/.bash_profile

Bash olmayan bir şey kullanıyorsanız, PATH'den bahsetmek için yapılandırma dosyalarına bakın.

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.