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.