Hoşgeldin Misafir

Linux PATH değişkeni

xS0N3R

23 Ağu 2020
5,424 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
PATH değişkeni nedir?

Linux kullanırken birçok komut kullanıyoruz; örneğin

Bash:
ls

komutu gibi. Bu komutlar aslında birer programdır ve biz bir komutu çalıştırdığımızda, o programın çalıştırılabilir dosyasını işletim sistemine çalıştırmasını söyleriz. Normalde, kendi yazdığımız bir programı veya GitHub üzerinden çektiğimiz bir programı çalıştırırken tam dosya yolunu belirterek çalıştırmamız gerekebilir. Ancak sistemde yüklü komutları yalnızca isimlerini yazarak çalıştırabiliyoruz. Bunu mümkün kılan ise PATH değişkenidir.


Örneğin, ls programı gerçekte

Bash:
/bin/ls

yolunda bulunur. Biz terminalde sadece ls yazdığımızda da, doğrudan "/bin/ls" yazdığımızda da bu programa erişebiliriz.


Peki bu kolaylık nasıl sağlanıyor? PATH değişkeni nedir derseniz, açıklaması oldukça basittir:
PATH değişkeni, işletim sisteminde tanımlı bir ortam değişkenidir ve içerisine yazılan dizinlerde komutları arayarak çalıştırılmasını sağlar.

Kendi bilgisayarımızda PATH değişkenimizi görmek için echo $PATH komutunu yazmamız yeterlidir. Bu komut sonucunda aşağıdaki gibi bir çıktı alırız:

Bash:
 /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

Gördüğünüz gibi burada çeşitli dizinler listelenmiştir. Bir programın ismini terminale yazdığımızda, işletim sistemi bizim yerimize bu dizinleri sırayla dolaşır ve çalıştırmak istediğimiz programın bu dizinlerde olup olmadığını kontrol eder.

İlk olarak /usr/local/bin klasörüne bakar; eğer aranan program burada bulunuyorsa doğrudan çalıştırır. Eğer bulunamazsa, dizinlerin arasında : işaretiyle ayrılmış bir sonraki dizine, yani /usr/bin klasörüne geçer. Burada da bulamazsa, yine : ile ayrılmış diğer dizinlere sırasıyla bakar. Programı bulduğu anda aramayı durdurur ve bulduğu programı çalıştırır.

Buradaki önemli nokta şudur: Eğer aynı isimde iki program birden fazla dizinde bulunuyorsa, işletim sistemi ilk bulduğu programı çalıştırır. Çünkü bir dizinde aradığı programı bulduğunda, diğer dizinlere bakmaya devam etmez.
Arama işlemi soldan sağa doğru yapılır ve dizinler : karakteri ile birbirinden ayrılır.

Eğer bir komutu girdiğimizde "command not found" (Komut bulunamadı) hatası alıyorsak, bu durum PATH değişkeni içerisinde bu komutun veya programın bulunduğu dizinin yer almadığı anlamına gelir.

Örnek göstermek istiyorum:

Bash:
soner@arch-linux:~$ nmap -T4 -A -vvv -sC
bash: nmap: command not found

PATH değişkenini düzenleme ve değiştirme.​


PATH değişkenini istediğimiz zaman değiştirebiliriz. Bunu geçici veya kalıcı olarak yapabiliriz.

Eğer sadece o anki oturum için PATH değişikliğine ihtiyaç duyuyorsak, aşağıdaki gibi bir komut kullanabiliriz:

Bash:
export PATH=/usr/local/bin:/başka-bir-dizin/dizin/:/diğerdizinker

şeklinde değiştirebiliriz, ama bu değişiklik bilgisayarımızı kapatıp açtığımızda kaybolur, kalıcı olarak değiştirmek istersen ise
kulladnığımız shell'e göre konfigirasyon yapmamız laızm. ~/.bashrc, ~/.zshrc Ancak şimdilik bu konuyu detaylı şekilde anlatmıyorum, çünkü yeni başlayan kullanıcılar için kafa karıştırıcı bir süreç olabilir.