$PATH
Linux bilgisayarınızın arka planındaki sessiz manipülatörlerden biridir. Kullanıcı deneyiminizi sessizce etkiler, ancak bu konuda gölgeli bir şey yoktur. Ne yaptığını ve nasıl ayarlayabileceğinizi açıklayacağız.
Linux'ta $ PATH Nedir ve Nasıl Çalışır?
Terminal penceresine bir komut yazıp Enter tuşuna bastığınızda, komutunuz yürütülmeden önce oldukça fazla etkinlik başlatırsınız.
Bash çoğu Linux dağıtımında varsayılan kabuktur. Girdiğiniz metin satırını yorumlar ve parametreler, yöneltmeler, yeniden yönlendirmeler ve başka ne varsa bunlarla karıştırılan komut adlarını tanımlar. Daha sonra bu komutların yürütülebilir ikili dosyalarını bulur ve sağladığınız parametrelerle başlatır.
Kabuğun yürütülebilir dosyayı bulmak için attığı ilk adım, bir ikilinin bile dahil olup olmadığını tanımlamaktır. Kullandığınız komut kabuğun kendisindeyse (bir “kabuk yerleşik”) başka arama gerekmez.
Kabuk yapıları bulmak en kolayıdır çünkü kabuğun ayrılmaz bir parçasıdır. Bu, onları bir alet kemerine yerleştirmek gibidir; her zaman yanınızdayız.
Diğer araçlarınızdan birine ihtiyacınız varsa, onu bulmak için atölyede dolaşmaya gitmelisiniz. Tezgahınızda mı yoksa duvar askısında mı? İşte bu $PATH
ortam değişkeni yapar. Kabuğun aradığı yerlerin ve aranacakları sırayı içerir.
Bir komutun kabuk yerleşik, takma ad, işlev veya bağımsız ikili mv / work / unfile olup olmadığını görmek istiyorsanız, type
aşağıda gösterildiği gibi komut:
type clear
type cd
Bu bize şunu söyler: clear
bir ikili dosyadır ve yolda bulunan ilk dosya şurada bulunur: /usr/bin
. Birden fazla sürümünüz olabilir clear
yüklü, ancak bu kabuk kullanmaya çalışacağınız.
Şaşırtıcı değil, cd
bir kabuk yerleşiktir.
$ PATH Sayınızı Listeleme
Yolunuzdakileri görmek kolaydır. Kullanmak için aşağıdakileri yazmanız yeterlidir echo
komutu basılı tutun ve değeri $PATH
değişken:
echo $PATH
Çıktı, iki nokta üst üste (:
) ayrılmış dosya sistemi konumları. Kabuk, yol boyunca soldan sağa doğru arama yaparak her dosya sistemi konumunu komutunuzu gerçekleştirmek için eşleşen bir yürütülebilir dosya olup olmadığını kontrol eder.
Aranacak dosya sistemi konumlarını ve arama sırasını görmek için listeden seçim yapabiliriz:
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
Hemen belirgin olmayan bir şey, aramanın geçerli çalışma dizininde başlamamasıdır. Bunun yerine, listelenen dizinler ve yalnızca listelenen dizinler boyunca çalışır.
Geçerli çalışma dizini yolunuzda değilse aranmaz. Ayrıca, yolda olmayan dizinlerde depolanmış komutlarınız varsa, kabuk bunları bulamaz.
Bunu göstermek için, adında küçük bir program oluşturduk. rf
. Yürütüldüğünde, rf
terminal penceresinde başlatıldığı dizinin adını yazdırır. Bulunur /usr/local/bin
. Ayrıca daha yeni bir sürümümüz var. /dave/work
dizin.
Aşağıdakileri yazıyoruz which
bize programımızın hangi sürümünü bulacağını ve kullanacağını göstermek için komut:
which rf
Kabuk, bulduğu sürümün dizinde yoldaki sürüm olduğunu bildirir.
Ateşlemek için aşağıdakileri yazıyoruz:
rf
1.0 sürümü rf
çalışır ve beklentilerimizin doğru olduğunu onaylar. Bulunan ve yürütülen sürüm şurada bulunur: /usr/local/bin
.
Başka bir sürümünü çalıştırmak için rf
bu bilgisayarda, aşağıda gösterildiği gibi komut satırında yürütülebilir dosyanın yolunu kullanmamız gerekir:
./work/rf
Artık kabuğa sürümün nerede bulunacağını söyledik rf
çalıştırmak istiyoruz, sürüm 1.1'i kullanıyor. Bu sürümü tercih edersek, /usr/local/bin
dizin ve eskisinin üzerine yazın.
Diyelim ki yeni bir sürüm geliştiriyoruz rf
. Geliştirip test ederken onu sık sık çalıştırmamız gerekecek, ancak yayınlanmamış bir geliştirme derlemesini canlı ortama kopyalamak istemiyoruz.
Veya, belki de yeni bir sürümünü rf
ve herkese açık hale getirmeden önce üzerinde bazı doğrulama testleri yapmak istiyoruz.
Çalışma dizinimizi yola eklersek kabuğun sürümümüzü bulmasını sağlarız. Ve bu değişiklik sadece bizi etkileyecek – diğerleri hala rf
içinde /usr/local/bin
.
$ PATH Dizininize Dizin Ekleme
Kullanabilirsiniz export
dizinine bir dizin ekleme komutu $PATH
. Dizin daha sonra kabuğun aradığı dosya sistemi konumları listesine eklenir. Kabuk eşleşen bir yürütülebilir dosya bulduğunda aramayı durdurur, bu nedenle önce dizininizi aradığından emin olmak istersiniz. /usr/local/bin
.
Bunu yapmak kolaydır. Örneğimizde, dizinimizi yolun başlangıcına ilk aranan konum olacak şekilde eklemek için aşağıdakileri yazıyoruz:
export PATH=/home/dave/work:$PATH
Bu komut seti $PATH
eklediğimiz dizine eşit olmak için, /home/dave/work
ve ardından mevcut yolun tamamı.
İlk PATH
dolar işareti yok ($
). Değerini PATH
. Son $PATH
bir dolar işareti var, çünkü PATH
değişken. Ayrıca, iki nokta üst üste işaretini (:
) yeni dizin ile $PATH
değişken ismi.
Şimdi yolun nasıl göründüğüne bakalım:
echo $PATH
bizim /home/dave/work
dizini yolun başına eklenir. Sağladığımız kolon onu yolun geri kalanından ayırır.
Sürümümüzü doğrulamak için aşağıdakileri yazıyoruz rf
bulunan ilk kişi:
which rf
Pudingin kanıtı çalışıyor rf
, Aşağıda gösterildiği gibi:
rf
Kabuk, Sürüm 1.1'i bulur ve /home/dave/work
.
Dizininizi yolun sonuna eklemek için, komutun sonuna aşağıdaki gibi hareket ediyoruz:
export PATH=$PATH:/home/dave/work
Değişiklikleri Kalıcı Hale Getirmek
Beth Brooke-Marciniak'ın dediği gibi, “Başarı iyidir, ancak başarı geçicidir.” Terminal penceresini kapattığınız anda, terminal penceresinde yaptığınız değişiklikler $PATH
Gittiler. Onları kalıcı hale getirmek için, export
komutunu seçin.
Koyduğunuzda export
emrinde .bashrc
dosyasında, terminal penceresini her açışınızda yolu ayarlar. aksine SSH
oturum açmanız gereken oturumlara bunlara “etkileşimli” oturumlar denir.
Geçmişte, export
emrinde .profile
oturum oturum terminalinin yolunu ayarlamak için.
Ancak, eğer export
ya .bashrc
veya .profile
dosyaları, hem etkileşimli hem de oturum açma terminal oturumlarının yolunu doğru şekilde ayarlar. Deneyiminiz farklı olabilir. Tüm olasılıkları ele almak için, bunu her iki dosyada nasıl yapacağınızı göstereceğiz.
Aşağıdaki komutu kullanın. /home
dizini düzenlemek için .bashrc
dosya:
gedit .bashrc
gedit
editör ile açılır .bashrc
dosya yüklendi.
Dosyanın en altına gidin ve daha önce kullandığımız şu dışa aktar komutunu ekleyin:
export PATH=/home/dave/work:$PATH
Dosya 'yı kaydet. Ardından, terminal penceresini kapatıp yeniden açın veya dot
okumak için komut .bashrc
dosya, aşağıdaki gibi:
. .bashrc
Ardından aşağıdakileri yazın echo
yolu kontrol etme komutu:
echo $PATH
Bu, /home/dave/work
dizin yolun başlangıcına.
Komutu .profile
dosya aynı. Aşağıdaki komutu yazın:
gedit .profile
gedit
editör ile başlar .profile
dosya yüklendi.
Ekle export
komutunu dosyanın altına yerleştirin ve kaydedin. Yeni bir terminal penceresini kapatmak ve açmak, .profile
yeniden okunacak dosya. Yeni ayarların etkili olması için oturumu kapatıp tekrar açmanız veya dot
aşağıda gösterildiği gibi komut:
. .profile
İLİŞKİLİ: Gedit ile Linux'ta Metin Dosyalarını Grafik Olarak Düzenleme
Herkes İçin Yol Belirleme
Sistemi kullanan herkesin yolunu ayarlamak için /etc/profile
dosya.
Kullanmanız gerekecek sudo
, aşağıdaki gibi:
sudo gedit /etc/profile
Ne zaman gedit
editör başlatıldığında, dışa aktar komutunu dosyanın altına ekleyin.
Dosyayı kaydedip kapatın. Değişiklikler bir sonraki oturum açışlarında diğerleri için geçerli olacaktır.
Güvenlik Hakkında Bir Not
Yanlışlıkla önde gelen iki nokta üst üste eklemediğinizden emin olun. ”:
“Yolunu aşağıda gösterildiği gibi girin.
Bunu yaparsanız, önce geçerli dizinde arama yapılır, bu da bir güvenlik riski oluşturur. Bir arşiv dosyasını indirip bir dizine açtığınızı varsayalım. Dosyalara bakar ve başka bir sıkıştırılmış dosya görürsünüz. Bu arşivi çıkarmak için sıkıştırmayı bir kez daha çağırıyorsunuz.
İlk arşivde yürütülebilir bir dosya varsa unzip
bu kötü niyetli bir yürütülebilir dosyaydı, yanlışlıkla gerçek olanı değil, unzip
yürütülebilir. Bunun nedeni, kabuğun önce geçerli dizine bakmasıdır.
Bu nedenle, yazarken her zaman dikkatli olun. export
komutlar. kullanım echo
$ PATH onları gözden geçirmek ve olmasını istediğiniz şekilde olduklarından emin olun.