Komutlar yalnızca disk işletim sistemi komutları değildir. Yol, kabuğun işletim sistemi komutlarını ve diğer komutları aradığı dizinlerin bir listesidir. Komutlar kısa program dosyaları gibidir. Yani, komutlar yürütülebilirdir. Bilgisayara yüklenen her uygulama, yürütülebilir bir dosya ile birlikte gelir. Uygulamayı çalıştırmak için önce yürütülebilir dosya devreye alınır. Bu yürütülebilir dosyalara komutlar da denir.
PATH değişkeni olmadan, her komuta aşağıdaki gibi mutlak yolla komut verilir:
/home/john/dir1/dir2/command.exe
burada ilk / kök dizindir; john, John adlı kullanıcının kullanıcı dizinidir; dir1 ve dir2 alt dizinlerdir; ve command.exe yürütülebilir dosyanın adıdır.
Yürütülebilir dosya için başka birçok ad mümkündür. Aslında, command.exe burada semboliktir. Bu nedenle, /home/john/dir1/dir2 (dosya olmadan) dizini PATH değişkenindeyse, john kullanıcısı komut isteminde [email protected] :~$ yazarak command.exe'yi çalıştırır, Komut.exe, önceki yol olmadan. Yani:
[e-posta korumalı] :~$komut.exeve ardından Enter tuşuna basın.
Bilgisayardaki PATH dizinlerinin mevcut listesini görmek için şunu yazın:
$dışarı attı $YOLve terminalde Enter'a basın. Sonuç şöyle bir şey olurdu,
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Şimdi soru şudur: PATH değişkenine bir dizin (ve önceki yolu) nasıl eklenir? Bazı kurulumlarda dizin otomatik olarak eklenir. Diğerlerinde manuel olarak eklenmesi gerekir. Bu makale, dizinin eklendiği iki ana yolu açıklamaktadır. Dizine yapılacak gibi dizin eklenmez (dahil edilir). İki ana yol, Geçici Ekleme ve Kalıcı Ekleme olarak adlandırılır. Bash, bu makaledeki kod örnekleri için kullanılan kabuktur.
Makale İçeriği
- Giriş – yukarıya bakın
- Geçici Ekleme
- Kalıcı Ekleme
- Çözüm
Geçici Ekleme
Geçici ekleme, eklemenin yalnızca bellekte gerçekleştiği anlamına gelir. Bilgisayar yeniden başlatıldığında kullanılmak üzere kaydedilmez.
Bourne Shell Yerleşik Dışa Aktarma Komutu
Basit bir ifadeyle, dışa aktarma komutu şudur:
$ihracat [isim[=değer]]Bu durumda, bellekteki bir değişkene yeniden bir değer atar.
Bellekteki PATH değişkeni zaten şöyle bir değere sahip olabilir:
YOL=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Eklenecek dizinin /home/john/dir1/dir2 olduğunu varsayın. Dışa aktarma komutu olarak yazılırsa,
$ihracat YOL=/ev/John/dir1/dir2o zaman /home/john/dir1/dir2, PATH değişkeni için zaten bellekte olan her şeyi değiştirirdi.
Dışa aktarma komutu olarak yazılırsa,
$ihracat YOL=$YOL:/ev/John/dir1/dir2Ardından, /home/john/dir1/dir2, kendisini değişkende bulunanın sonuna ekler. Yani, yeni değişken şöyle olacaktır:
YOL=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/ ana sayfa/john/dir1/dir2
Yukarıdaki önceki kod satırında, değerin zaten orada olan kısmının yeni kısımdan iki nokta üst üste işaretiyle ayrıldığına dikkat edin, ':'. $PATH kod satırında, zaten bellekte bulunan PATH değeriyle genişler (değiştirilir).
Artık aynı komut birden fazla dizinde olabilir. Komut isteminde önceki yol olmadan yürütülebilir bir komut yazıldığında, kabuk bellekteki PATH değişkeninin değerini (dize) soldan sağa aramaya başlar. Böylece, yukarıdaki kod satırıyla, aramada en sonunda /home/john/dir1/dir2 gelir. Kim rehberinin en son gelmesini ister? - Hiç kimse. Bu nedenle, dizini dahil etmenin (eklemenin) daha iyi bir yolu şudur:
$ihracat YOL=/ev/John/dir1/yön2:$YOL/home/john/dir1/dir2 şimdi bir sonraki dizinden iki nokta üst üste ile ayrılmış olarak başlangıçtadır. Bu nedenle, [e-posta korumalı] :~$ istemiyle,
[e-posta korumalı] :~$ihracat YOL=/ev/John/dir1/yön2:$YOLyazıp Enter'a bastıktan sonra, dir2 dizinindeki command.exe komutu şu şekilde yürütülür:
[e-posta korumalı] :~$komut.exeBilgisayar kapatılmadığı sürece, kullanıcı, önceki yolu yazmadan command.exe'yi yürütmeye devam edecektir.
Bilgisayar kapatıldığında, rastgele erişimli bellekteki her şey silinir. Kötü haber şu ki, bilgisayar kullanıcısı, bilgisayar her yeniden başlatıldığında dizinini PATH değişkenine ekleme işlemini tekrarlamak zorunda kalacak. Bugün kimse bunu yapmak istemiyor. Bu nedenle, Kalıcı Toplama yaklaşımı önerilen yaklaşımdır. Yani, PATH'e yapılan eklemenin (sabit diske) kaydedilmesi gerekir.
Kalıcı Ekleme
Yukarıdaki tartışmadan fikir, yapılan değişikliği (sabit diske) kaydetmektir. Bu nedenle, değişiklik, bilgisayar her başlatıldığında kabuğun okuduğu bir dosyaya kaydedilirse, sorun olmaz. Yani, bilgisayar her başlatıldığında bellekteki PATH değişkeni uygun şekilde güncellenecektir. Bir bilgisayar başlatıldığında, önyükleme sırasında belirli dosyaları okur. Linux için Bash kabuğunun okuduğu dosyalardan biri, ~/.bashrc . Dosya adı . bashrc , nokta ile başlayan. Kullanıcının dizinindedir.
Bash, bugün Linux için muhtemelen en popüler kabuk olan yalnızca bir kabuktur. Linux için başka bir kabuk Zsh'dir. Zsh ile ilgili dosya ~/. zshrc , hala kullanıcının dizininde. Kabuk başladığında, önyükleme sırasında bu dosyayı okur. Bash için dosya, ~/.bashrc . Bu nedenle, yukarıdaki ekleme kodu ~/.bashrc dosyasına yazılırsa, dizin her zaman bellekte olacaktır, çünkü bilgisayar her başlatıldığında ~/.bashrc onu her zaman PATH'e dahil edecektir. Bilgisayar kapanana kadar bellekte kalır.
Bash'de ~/.bashrc gizli bir dosyadır, bu nedenle ls komutunun olağan kullanımı onu göstermez. ~/.bashrc bazı Bash (kabuk) komutları içerir. Ubuntu, Linux'un bir çeşididir. Ubuntu bir metin editörü ile birlikte gelir. Yazarın bilgisayarında Ubuntu metin düzenleyicisinin arka planı siyahtır.
Yukarıdaki ekleme komutu (istem olmadan) ~/.bashrc dosyasına dahil edilmelidir. Mevcut içeriğiyle yumuşamamak için dosyanın sonuna eklemek iyidir, bu muhtemelen iyi çalışıyor.
~/.bashrc'yi Ubuntu'da açmak için terminaldeki komut istemine aşağıdakini yazın ve Enter'a basın:
$nano~/.bashrcNano'nun metin düzenleyicisi olduğu yer. Burada nano, argümanı ~/.bashrc olan bir komuttur (yürütülebilir). Dosyanın içeriği, terminal penceresini kaplamak için metin düzenleyicide açılmalıdır.
~/.bashrc dosyası, muhtemelen siyah bir arka planla metin düzenleyicide açılacaktır. İmleç sol üst köşede yanıp sönecektir.
İmleç dosyanın sonuna ulaşana kadar klavyedeki aşağı ok tuşuna sürekli basın. Yeni bir satır ekle,
$ihracat YOL=/ev/John/dir1/yön2:$YOLHepsi bu degil. ~/.bashrc dosyasındaki değişiklik kaydedilmedi. Dosyayı yapılan değişiklikle kaydetmek için Ctrl+o tuşlarına basın ve görünen diğer talimatları izleyin. Metin düzenleyiciden çıkmak için Ctrl+x tuşlarına basın ve normal terminal penceresi metin düzenleyici penceresinin yerini almalıdır. Diğer kabuk komutları daha sonra verilebilir.
echo $PATH verilirse, yeni dizin ekranda görünmeyecektir. Buradan devam etmenin iki yolu vardır: ya bilgisayarı yeniden başlatın ya da ~/.bashrc dosyasının yeni içeriğini source komutuyla belleğe alın. Source komutunu aşağıdaki gibi kullanmak kolaydır:
$kaynak~/.bashrcKaynak komutu yeniden başlatılmadan verilirse, echo $PATH sonuçta (ekranda) eklenen yeni dizini gösterir. İlgilenilen komut daha sonra önceki yol olmadan yazılabilir.
Not: PATH değerinin (liste) sonu ile ~/.bashrc dosyasının sonu arasında karıştırmayın. Ayrıca, bellekteki PATH içindeki bir dizin ile sabit diskteki dizindeki yürütülebilir bir dosya arasında karıştırmayın.
Çözüm
PATH, Linux kabuklarında yerleşik bir değişkendir. PATH değeri, iki nokta üst üste ile ayrılmış dizinlerin bir listesidir. Bu dizinlerin her biri için sabit diskte bir komut (yürütülebilir dosya) vardır. Satışta bir yol olmadan bir komut verilirse, kabuk komut için bu dizinlere bakacaktır. Komutu herhangi bir dizinde görmüyorsa, komut yürütülmeyecektir. Bu durumda, komutu yürütmek için komutun yolundan önce gelmesi gerekir. Komut, PATH değerinde birden fazla dizinde olabilir. Kabuk komuta sahip ilk dizini görür görmez komutu yürütür. PATH değeri aslında iki nokta üst üste ile ayrılmış dizinlerden oluşan bir dizedir.
Sorun, yeni bir uygulamanın yürütülebilir dosyasının dizininin PATH'e nasıl ekleneceğidir. Bazı durumlarda bu, yeni uygulamanın yükleme programı tarafından otomatik olarak yapılır. Diğer durumlarda, manuel olarak yapılmalıdır. Bunu manuel olarak yapmanın iki yolu vardır: Geçici Ekleme ve Kalıcı Ekleme. Geçici Ekleme, dışa aktarma komutunu kullanır ve yalnızca bilgisayar açıkken dizini ekler. Kalıcı Ekleme, gelecekteki işlemler için dışa aktarma komut satırını ~/.bashrc başlatma dosyasına (Bash) kaydetmelidir.