Mac OS'de PATH nedir?


12

Ne PATHMac OS? Küresel komut satırı araçlarını yüklemek için kullandım, ancak bulduğum tek belge , bunu yapmak için eğiticiler , başlık altında neler olduğuna dair gerçek bir açıklama yok. Ayrıca Wikipedia'da alakalı bir sayfa bulamadım .

Öyleyse amacı PATHnedir /etc/pathsve ve ~/.bash_profile** arasındaki fark nedir?

Örneğin paths, dosyamda şunu görüyorum:

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

Ama bence ~/.bash_profileşunu görüyorum:

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

Bu yalnızca pathsdosyaya özgü bir kullanıcı mı? Tüm bu şeyler neye pathsbenziyor /usr/bin?


2
Lütfen birden fazla soruyu tek bir gönderide birleştirmeyin. Sorularınızın her biri burada ayrı ayrı karşılanır, ancak hep birlikte böyle olmaz. Lütfen bunu tek bir soruya kesin, 1 ve 2'yi birleştirebilirsiniz, ancak diğerlerinin özellikle PATH ile ilgisi yoktur. 3 cevaplanır burada 4 açıklanmıştır burada ve 5 korkarım çok mantıklı değil. Bonus sorunuz da hangi dosyalar ikili? Komut dosyaları değildir.
terdon

Sorumu aşağı düzenledim. Ayrıca, bu bağlantıları yararlı buldum. Teşekkürler.
gwg

Yanıtlar:


15

1. PATH'ın amacı nedir?

PATHkabuğunuzun komut satırında adlarına açık bir yol sağlamadan ( örneğin örneğiniz gibi) adlandırabileceğiniz yürütülebilir dosyaları arayacağı, iki nokta üst üste işaretli dizin listesi içeren bir ortam değişkenidirjsdoc . Böylece, eğer senin PATHsahiptir

/usr/bin:/bin:/home/bin

adıyla çağırdığınız yürütülebilir dosyalar bu dizinlerde (bu sırayla) aranır ve bulunan ilk yürütülebilir dosya yürütülür.

2. / etc / paths ve ~ / .bash_profile arasındaki fark nedir

Göre ServerFault bu soruya , /etc/pathsayarlamak için kullanılır PATHiken (tüm kullanıcılar için, yani sistem genelinde) global olarak ~/.bash_profile(burada ayarlanan kullanıcı başına tercihleri için kullanılan ~kullanıcının ev dizini olacaktır). Yazılır ne .bash_profileteneke ya küresel eklemek PATHgelen /etc/pathsveya tamamen geçersiz kılar.

Kayıt için, /etc/pathsbir MAC OS özelliği gibi görünüyor: En azından GNU / Linux'ta karşılaşmadım.


Az önce onları düzenledim, ama hepsini cevapladığınız için teşekkürler!
gwg

@ggundersen Cevabımı düzenlediğiniz soruya uyacak şekilde kesmiştim.
Joseph R.

@ggundersen cevabımı ve /etc/pathsOSX'teki bağlantıları da okumak isteyebilirsiniz .
terdon

7

PATH'ın amacı nedir?

Bu sizin nasıl kabuk programları bulur. Eğer yazdığınızda ls, örneğin, adlı bir program çalıştıran lsyaşayan /binMac OS X'te Kişisel kabuk sırf o bulabilirsiniz dahil çoğu sistemleri üzerinde /binbulunmaktadır PATH.

Kabuk programları PATHsoldan sağa doğru sırayla arar . lsSisteminizde iki program varsa ve dizinleri her ikisinde de PATHbulunuyorsa, dizinde ilk sırada bulunan programı bulur PATH.

/ Etc / paths ve ~ / .bash_profile arasındaki fark nedir

Ayarlanan yollar , başlangıçta Mac OS X'teki tüm kabuklarda /etc/pathseklenir PATH.

~/.bash_profile, başlangıçta Bash tarafından çalıştırılan birkaç kabuk komut dosyasından yalnızca biridir ve bunlardan birkaçı Bash'e özgüdür. Bu nedenle, kabuğunuzu değiştirirseniz - Mac OS X de gönderilir tcshve zshörneğin /etc/bashrc, yeni kabuğunuza uygulanmayan değişiklikler yapılır .

Ayrıca, kullanıcı başına /etc/pathsise sistem düzeyinde bir yapılandırma dosyasıdır ~/.bash_profile. Mac'inizde birden fazla etkileşimli kullanıcı ayarladıysanız /etc/paths, herkesin görünmesini istemediğiniz dizinleri eklemek istemezsiniz PATH. Aynı şey /etc/bashrc, elbette sadece Bash'i kabukları olarak kullanan kullanıcılar için geçerli olanlar dışında geçerlidir.

PATH ve $ PATH ve $ {PATH} arasındaki fark nedir?

Değişkeni ayarlarken genellikle yalnızca sigil olmayan değişkeni görürsünüz. ortam değişkenini dizeye FOO=barayarlar . Siz yazarsanız , kabuk size tüm ortam değişkenlerini gösterir ve bu durumda değişkeni herhangi bir sigil olmadan da görürsünüz.FOObarset

$PATHve ${PATH}genellikle birbirinin yerine kullanılabilir. Kabuğa geçerli PATHdeğişkenin yerinde değerini genişletmesini söylerler . Fark, onları nasıl ve nerede kullandığınızla ilgilidir. Örneğin:

$ FOO=bar
$ echo $FOO
bar
$ echo $FOOx

$ echo ${FOO}x
barx

İkinci echokomutta, kabuk hiçbir şey yazdırmaz, çünkü kabuktan FOOx, var olmayan denilen bir değişkeni yazdırmasını ister ; kabuk varolmayan değişkenlere boş davranır. Üçüncüsü echoküme ayracı sözdizimini kullandığından, kabuğun FOOdeğişkeni xistediğini ve hemen sonra yazdırılmasını istediğiniz başka bir karakter olduğunu görmesini sağlar .

Bu arada kıvırcık parantez olmadan aynı etkiyi elde etmenin başka bir yolu var:

$ echo "$FOO"x
barx

Ortam değişkenleri çift tırnak içinde genişletilir ve tırnaklar, xdeğişken genişletmeden ayırır, böylece kabuk doğru olanı yapar.

Ben kullanıyorum FOOsadece netlik için buraya ortam değişkeni. Yukarıda yazdığım her şey PATH, başka bir ortam değişkeni olduğu için de geçerlidir . Örnek metinler çok daha uzun olurdu.

PATH ihracatı ne anlama geliyor? Ne zaman ihracat yapıyoruz?

Yukarıdaki FOOörneği alırsanız, başka bir program çalıştırırsanız, FOOdışa aktarılmadığı için değişkeni görmez. Yalnızca bu mermi örneği içinde yaşar:

$ echo $FOO
bar
$ bash
$ echo $FOO

$ exit
$ export FOO
$ bash
$ echo $FOO
bar

bashZaten kullandığımın altında yeni bir kabuk çalıştırdığımda , değerini göstermeye çalışın FOO, bir boş alıyorum çünkü FOOalt programların görmesi için dışa aktarılmadı. Sonra ikinci bashörnekten çıktım , dışa aktardım, bashtekrar koştum ve şimdi ikinci örnek değerini görüyor FOO.

Sen kullanmak exportkabuktan ayarlanan değerleri görmek için alt programı istediğinizde ve bunun olmasına istemediğinizde bunu kullanmayın.

Tipik olarak, kabuk komut dosyalarında geçici değişkenleri dışa aktarmam, çünkü programların bu kabuk komut dosyasından çalışma şeklini değiştirmelerini istemiyorum.

Diğer sorularınıza cevap vermeyeceğim. Her seferinde sadece bir soru sormalısınız. Ben sadece birçoğuna cevap verdim çünkü belirsiz bir şekilde ilgili. Diğer her şey ayrı bir soruya aittir.

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.