PATH Bash'de Nasıl Çalışır?

How Does Path Work Bash



Linux terminalinde bir komut yazarken, genellikle belirli bir işi yapmak için bir programı çağırırsınız, örneğin, ls , CD , rm , mkdir , vb. Tüm bu programlar dosya sisteminde bir yerde bulunur, değil mi? Bash bu programların nerede olduğunu nasıl biliyor?

Burada ortam değişkenleri, özellikle PATH değişkeni devreye giriyor. Bu değişken, bash'a bu programları nerede arayacağını söylemekten sorumludur. PATH'in nasıl çalıştığını ve PATH'in nasıl görüntüleneceğini/değiştirileceğini kontrol edelim.







Ortam değişkeni ve $PATH

Kabuk terminolojisinde ortam, kabuğun her oturum başlattığında oluşturduğu bir alandır. Ortamı yönetmek için ortamın farklı kısımlarını ifade eden ortam değişkenleri vardır. Değişkenin değeri dize, dizin konumu, değer veya diğerleri olabilir.



PATH, belirli dizinleri takip eden bir ortam değişkenidir. Varsayılan olarak, PATH değişkeni aşağıdaki konumları içerir.



  • /usr/bin
  • /usr/sbin
  • /usr/yerel/bin
  • /usr/yerel/sbin
  • /NS
  • /sbin
  • /snap/bin (Snap kuruluysa)

PATH altında şu anda hangi dizinlerin kayıtlı olduğunu görmek ister misiniz? Bir terminali ateşleyin ve aşağıdaki komutu çalıştırın.





$dışarı attı $YOL

Burada $ işareti bir değişkeni belirtmek içindir. NS dışarı attı komutu, PATH değişkeninin değerini yazdırır.



Şimdi, bu özel ortam değişkeni neden bu kadar önemli? Bunun nedeni, kabuğun ve sistemin bir bütün olarak ona nasıl davrandığıdır. PATH değişkeni, yürütülebilir dosyaların bulunabileceği yerleri depolar. Herhangi bir komut çalıştırıldığında, kabuk, hedef yürütülebilir dosya için PATH dizinlerini arar ve çalıştırır.

Örneğin, ile test edelim dışarı attı emretmek. Burada bir yankı komutu çalıştırıyorum.

$dışarı attıSelam Dünya!

yürütülebilir dosya nerede dışarı attı ? Öğrenmek için sonraki komutu çalıştırın.

$Hangi dışarı attı

Gördüğümüz gibi, dışarı attı yürütülebilir dosya /usr/bin/echo konumunda bulunur. Hangisi nerede? Hadi bulalım.

$Hangi Hangi

Ayrıca /usr/bin/hangi konumunda bulunur. Komut araçlarının çoğu /usr/bin dizini altında bulunur. Burada bash, bir komutun yürütülebilir (ler) ini aramak için konumlar için PATH'e danışıyor.

PATH değiştiriliyor

PATH değerini değiştirmeden önce yapısını anlamak önemlidir. PATH değerini kontrol etmek için komutu tekrar çalıştırın.

$dışarı attı $YOL

Dizinlerin her birinin bir : işaretiyle ayrıldığına dikkat edin.

PATH dizinine dizin ekleme

PATH'e özel bir dizin eklemek için bashrc dosyasının yardımını alacağız. Yeni bir bash oturumu her başladığında bash yüklenen özel bir bash betiğidir. bashrc dosyasının Linux sistemindeki her bir kullanıcı için benzersiz olduğunu unutmayın.

bashrc dosyasını bir metin düzenleyicide açın. Bashrc dosyası zaten mevcut değilse, editör bunu otomatik olarak oluşturacaktır.

$geldim~/.bashrc

Burada, Ubuntu ile birlikte gelen varsayılan bashrc'dir. Dosyanın sonuna (varsa) gidin ve aşağıdaki satırı ekleyin.

$ihracat YOL='$YOL: /'

Burada, PATH değişkeninin yeni değeri, yeni eklediğimiz yeni dizinle birlikte eski değişken olacaktır.

Dosyayı kaydedin ve bash'a yeniden yüklemesini söyleyin.

$kaynak~/.bashrc

Yeni yolun başarıyla eklenip eklenmediğini doğrulayalım.

$dışarı attı $YOL

İşte! PATH başarıyla güncellendi! Şimdi bash, yürütülebilir dosya(lar) için yeni yolu da arayacaktır. zaten bir senaryom var demo.sh masaüstünde. Bakalım tam konumu belirtmeden bash çağırabilecek mi?

$demo.sh

Evet, bash herhangi bir sorun olmadan doğrudan arayabilir.

Dizin PATH'den kaldırılıyor

PATH dizinine dizin eklemenin/kaldırmanın basit bir yolu yoktur. Açıklamama izin ver.

PATH değeri aslında sabittir. Peki ya bashrc numarası? Bashrc, bir oturumu her başlattığında bash yükleyen bir bash betiğidir. Bashrc'de, PATH'nin yeni değerinin varsayılan değeri ve kullanıcı tanımlı dizin olacağını az önce ilan ettik. Şimdi, bash her yüklendiğinde, bashrc'nin yeni bir PATH değeri atamasını söylediğini görüyor ve yaptığı şey bu.

Benzer şekilde, PATH'den bir dizini kaldırmak istiyorsak, bash her başladığında, değiştirilen değeri kullanması için bashrc'de farklı bir PATH değerini yeniden atamamız gerekir.

Bu örneğe bir göz atalım. ~/Desktop dizinini PATH'den kaldırmaya hazırım.

$dışarı attı $YOL | sed -Ve 's/:~/Masaüstü$//'

Dizin /home/wrong/dir olsaydı, komut şöyle görünürdü.

$dışarı attı $YOL | sed -Ve 's/:/home/yanlış/dir$//'

Burada ilginç olan kısım sed aracıdır. sed hakkında daha fazla bilgi edinin Burada ve Burada . Uzun lafın kısası, sed kullanarak çıktıyı değiştiriyoruz. dışarı attı emretmek. Şimdi, bu değiştirilmiş çıktıyı PATH değerini değiştirmek için kullanabiliriz.

bashrc'yi bir metin düzenleyicide açın ve aşağıdaki satırları ekleyin. Çalıştığını kanıtlamak için kasıtlı olarak önceki satırları tutuyorum.

$ihracat YOL='$(echo $YOL | sed -e 's/:~/Desktop$//')'

Alternatif olarak, PATH değerini manuel olarak da ayarlayabilirsiniz. Bu emek isteyen bir süreç ama daha basit ve basit.

$ihracat YOL=/usr/yerel/sbin:/usr/yerel/NS:/usr/sbin:/usr/NS:/sbin:/NS:
/usr/oyunlar:/usr/yerel/oyunlar:/patlatmak/NS

Burada komutun değeri PATH'e atanacaktır. Dosyayı kaydedin ve bashrc'yi yeniden yükleyin.

$kaynak~/.bashrc

Sonucu doğrulayalım.

$dışarı attı $YOL

PATH değeri güncellendi!

Son düşünceler

Bash'de PATH değişkeni önemli bir değişkendir. Bash oturumu boyunca çalışan herhangi bir program değişkeni devralır, bu nedenle PATH'nin yalnızca gerekli dizinleri içermesi önemlidir. Daha fazla dizin eklemek, sisteme yalnızca fazlalık katacaktır.

Bash için tüm ortam değişkenlerini görmek için bu komutu çalıştırın. İlk komut kısmı tüm ortam değişkenlerini döndürür ve ikinci kısım çıktıyı artan düzende sıralar.

$ortam | çeşit

Bash deneyiminizi renklendirmek ister misiniz? Bash takma adları, işleri hızlandırmanın ve renklendirmenin benzersiz bir yolunu sunar. Bash takma adları hakkında daha fazla bilgi edinin .

Eğlence!