Hoşgeldin Ziyaretçi



Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
YOL (PATH) Kavramı
#1
Geçen bölümde, komut satırı hakkında bilmemiz gereken temel şeyleri öğrendik. Ama işimiz henüz bitmedi. Programcılık faaliyetlerimizi sağlıklı ve sağlam bir zemin üzerinde yürütebilmemiz için öğrenmemiz gereken bir kavram daha var. O kavramın adı PATH, yani YOL. İşte biz bu bölümde, programcılık maceramız açısından bir hayli önemli bir kavram olan bu YOL (PATH) kavramından söz edeceğiz. Peki nedir bu YOL denen şey?
YOL Nedir?
Bir programın veya dosyanın yolu, kabaca o programın veya dosyanın içinde yer aldığı dizindir. Örneğin GNU/Linux işletim sistemlerinde önemli bir sistem dosyası olan fstab dosyasının yolu /etc/fstab‘dır. Windows işletim sisteminde ise, öntanımlı internet tarayıcısı olan Internet Explorer adlı programın yolu C:\Program Files\Internet Explorer\iexplore.exe‘dir. Bu örneklerden de anlaşılacağı gibi, bir dosyanın ya da programın yolu, basitçe o dosyanın ya da programın bilgisayardaki tam adresidir.
Yol kelimesinin bir de daha özel bir anlamı bulunur. Bilgisayar dilinde, çalıştırılabilir dosyaların (executables) içinde yer aldığı dizinlerin adlarını tutan özel bir çevre değişkeni vardır. İşte bu çevre değişkenine PATH (YOL) adı verilir ve bu anlamda kullanıldığında yol kelimesi genellikle büyük harfle yazılır. Gelin isterseniz bu tanımı biraz daha açalım.
İşletim sistemleri, bir programı komut satırından ismiyle çağırdığımızda söz konusu programı çalıştırabilmek için bazı özel dizinlerin içine bakar. İlgili programın çalıştırılabilir dosyası eğer bu özel dizinler içindeyse, işletim sistemi bu dosyayı bulur ve çalıştırılmasını sağlar. Şimdi bu konuyu daha iyi anlayabilmek için birkaç deneme yapalım.
GNU/Linux sistemimizde hemen bir konsol ekranı açıp şu komutu veriyoruz:
echo $PATH

Bu komutun çıktısı şuna benzer bir şey olacaktır:
/usr/local/sbin:/usr/local/bin:/usr/sbin:
/usr/bin:/sbin:/bin:/usr/games

Windows işletim sisteminde ise aynı işlev için komut satırında şu komutu veriyoruz:
echo %PATH%

Bu da şuna benzer bir çıktı verecektir:
C:\Windows\system32;C:\Windows;C:\Windows\System32\
Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\;

İşte bu çıktı bize YOL değişkeni (İngilizcede PATH variable) dediğimiz şeyi gösteriyor. İşletim sistemimiz, bir programı çağırmak istediğimizde, yani komut satırında programın adını yazıp Enter tuşuna bastığımızda öncelikle yukarıda adı verilen dizinlerin içini kontrol edecektir. Eğer çağırdığımız programın çalıştırılabilir dosyası bu dizinlerden herhangi birinin içinde ise o programı ismiyle çağırabiliyoruz.
GNU/Linux işletim sisteminde bir programın YOL’unun ne olduğunu bulmak için
Kod:
which
adlı bir sistem komutundan yararlanabiliriz. Örneğin Gedit programının YOL’unu bulmak için şu komutu verelim:
which gedit

Bu komut /usr/bin/gedit çıktısını verecektir. Hemen yukarıda
Kod:
echo $PATH
komutunun çıktısını kontrol ediyoruz ve görüyoruz ki /usr/bin/ dizini YOL değişkenleri arasında var. Dolayısıyla, Gedit programı YOL üstündedir, diyoruz. Zaten Gedit programının YOL üstünde olması sayesinde, konsolda sadece
Kod:
gedit
komutunu vererek Gedit programını çalıştırabiliyoruz.
Bu arada elbette
Kod:
which gedit
komutunun düzgün çıktı verebilmesi için Gedit adlı programın sisteminizde kurulu olması gerekiyor. Bu program genellikle GNOME ve UNITY masaüstü ortamlarının kurulu olduğu GNU/Linux dağıtımlarında bulunur. Eğer KDE adlı masaüstü ortamını kullanıyorsanız Gedit adlı program sizde kurulu olmayabilir. Eğer öyleyse siz Gedit yerine, sisteminizde kurulu olduğundan emin olduğunuz başka bir programın adını verebilirsiniz. Mesela
Kod:
kwrite
veya
Kod:
kate
.
Gelelim Windows’a...
Windows’ta ise GNU/Linux’taki gibi çalıştırılabilir dosyaların yolunu bulmamızı sağlayan which benzeri bir program kurulu olarak gelmez. Ama eğer isterseniz pankaj-k.net/archives/upload/which.cmd adresinden indireceğiniz which.cmd adlı betiği C:\WINDOWS dizini altına kopyalayarak benzer etkiyi elde edebilirsiniz.
Bu betiği indirip C:\WINDOWS dizini altına which.cmd adıyla kaydettiğinizi varsayarak komut satırında şöyle bir deneme yapabiliriz:
which notepad.exe

Bu komut şöyle bir çıktı verir:
Found in PATH: C:\WINDOWS\system32\notepad.exe

Demek ki notepad.exe‘nin YOL’u buymuş. Hemen yukarıdaki
Kod:
echo %PATH%
çıktısını kontrol ediyoruz ve görüyoruz ki notepad.exe‘yi barındıran C:\WINDOWS\system32\ dizini YOL değişkeni içinde yer alıyor. O halde bu programı doğrudan ismiyle çağırabiliriz. Yani komut satırında doğrudan
Kod:
notepad.exe
komutunu verirsek Notepad programı çalışmaya başlayacaktır. Bir de şunu deneyelim:
which iexplore.exe

Argument "iexplore.exe" not found in PATH

Demek ki iexplore.exe YOL üstünde değilmiş. O yüzden bu programı komut satırından doğrudan ismiyle çalıştıramıyoruz:
iexplore.exe 'iexplore.exe' iç ya da dış komut,
çalıştırılabilir program ya da toplu iş dosyası
olarak tanınmıyor.

YOL üzerinde bulunmayan bir programı çalıştırmak için o programın tam yol adresini kendimiz yazmalıyız. Program YOL üstünde bulunmadığı için işletim sistemimiz bu programın çalıştırılabilir dosyasının nerede olduğunu bulamıyor. Bu yüzden programın nerede olduğunu işletim sistemimize bizim söylememiz gerekiyor. Mesela iexplore.exe YOL üstünde olmadığı için işletim sistemimizin bu programı sırf ismiyle çalıştırması mümkün değil. İşletim sistemimizin bu programı bulabilmesi için, bu programın tam yolunu elle bizim girmemiz gerekiyor:
"C:\Program Files\Internet Explorer\iexplore.exe"

Yukarıdaki komutu verirken tırnak işaretlerini koymayı unutmuyoruz. Ayrıca kullandığımız tırnak işaretlerinin çift tırnak olduğuna da dikkat edin. Windows işletim sistemi açısından tek ve çift tırnak işaretleri birbirinden farklıdır. Yukarıdaki komutu tırnaksız veya tek tırnak işaretleriyle çalıştırmayı denerseniz, ‘Program Files’ ve ‘Internet Explorer’ ifadeleri içinde geçen boşluk karakterleri nedeniyle Windows size bir hata mesajı gösterecektir.
Aynı şekilde GNU/Linux işletim sistemlerinde /etc dizini de YOL üzerinde olmadığı için mesela bu dizinde yer alan fstab dosyasını doğrudan adıyla çağıramayız. Bu yüzden, bu dosyayı açmamız gereken durumlarda, dosyanın bulunduğu konumun tam adresini yazmamız lazım. Örneğin /etc/fstab adlı dosyayı Gedit programıyla açmayı deneyelim:
gedit fstab

Bu komut, o anda bulunduğunuz dizin içinde fstab adlı boş bir dosya oluşturacaktır. Bizim açmaya çalıştığımız asıl fstab dosyası YOL üzerinde bulunmadığı için bu dosyayı sadece adını kullanarak açamayız. Bu dosyayı açabilmek için dosyanın konumunu eksiksiz bir biçimde yazmamız lazım:
gedit /etc/fstab

Bütün bu anlattıklarımız, özellikle GNU/Linux işletim sistemlerine kurmaya çalıştığınız bazı programların neden çalışmadığını açıklıyor olmalı. Eğer bir programı çalıştırmak için ismini komut satırında yazıyorsanız, ama bu komut o programı çalıştırmıyorsa ve siz de bu komutun doğru olduğuna eminseniz, muhtemelen o programın çalıştırılabilir dosyasını barındıran dizin YOL üzerinde değildir. Böyle bir durumda yapmanız gereken bazı işlemler var. Gelin bu işlemlerin neler olduğunu görelim.
YOL’a Dizin Eklemek
Dediğimiz gibi, eğer bir program dizini YOL değişkenini oluşturan dizinler arasında yer almıyorsa, o programı komut satırından ismiyle çalıştıramayız. Böyle bir durumda o programı bizim elle YOL’a eklememiz gerekir. Peki bu işlemi nasıl yapacağız?
Öncelikle Windows’tan başlayalım...
Windows
Windows’ta herhangi bir programı YOL’a eklemek için ilk olarak Başlat simgesine tıklıyoruz:
Alıntı:baslat.png
Burada menünün sağ tarafındaki listede yer alan ‘Bilgisayar’ düğmesine sağ tıklıyoruz ve şöyle bir ekranla karşılaşıyoruz:
Alıntı:bilgisayar.png
Karşımıza çıkan menünün en altındaki ‘Özellikler’ satırına tıklıyoruz. Bu satıra tıkladığımızda şöyle bir pencereyle karşılaşmamız gerekiyor:
Alıntı:sistem.png
Burada, pencerenin sol tarafındaki seçenekler arasında ‘Gelişmiş Sistem Ayarları’ adlı bir satır göreceksiniz. O satıra tıklayın ve şu ekranı karşınıza alın:
Alıntı:sistem_ozellikleri.png
Bu ekranda ‘Gelişmiş’ sekmesinin içinde ‘Ortam Değişkenleri’ adlı bir düğme göreceksiniz. Bu düğmeye tıkladığınızda ise karşınıza şöyle bir pencere açılacak:
Alıntı:ortam_degiskenleri.png
Bu pencerede ‘Sistem Değişkenleri’ başlığı altında birtakım öğeleri barındıran bir liste göreceksiniz. O listede Path adlı girdiyi bulun. Path girdisine çift tıkladığınızda şöyle bir pencere ile karşılaşacaksınız:
Alıntı:sisdeg.png
Burada, ‘Değişken Değeri’ ifadesinin karşısında bir kutucuk ve bu kutucuğun içinde de birtakım dizin adları görüyorsunuz. İşte YOL’a eklemek istediğimiz programı barındıran dizini bu kutucuğa yazacağız.
Dikkat ederseniz bu kutucuğun içindeki değerler birbirinden ; (noktalı virgül) işareti ile ayrılmış. Dolayısıyla biz de listenin en sonuna ekleyeceğimiz dizin adını ; işaretini kullanarak önceki girdilerden ayıracağız.
Gelin isterseniz ufak bir deneme çalışması yapalım.
Şimdi yukarıda bahsettiğimiz kutucuğun içindeki listenin en sonuna şu ifadeyi ekleyin:
;C:\Program Files\Internet Explorer

Daha sonra Tamam düğmelerine basarak bütün pencereleri kapatın. Daha önce gösterdiğimiz şekilde komut satırına ulaşın ve orada şu komutu verin:
iexplore

Gördüğünüz gibi, artık bu komut bize bir hata mesajı vermek yerine, doğru bir şekilde Internet Explorer adlı programı çalıştırıyor. İşte bunun sebebi, bizim Internet Explorer programını barındıran dizini YOL’a eklemiş olmamızdır. Bu sayede biz
Kod:
iexplore
komutunu verdiğimizde işletim sistemimiz ilgili programı nerede araması gerektiğini biliyor.
İsterseniz
Kod:
echo %PATH%
komutunu verip C:\Program Files\Internet Explorer adlı dizinin gerçekten yola eklenip eklenmediğini kontrol edebilirsiniz.
Bu arada, YOL değişkeni üzerinde yaptığınız herhangi bir değişikliğin etkinleşebilmesi için açık olan bütün MS-DOS komut pencerelerini kapatmanız gerekir. Komut penceresini tekrar açtığınızda, yaptığınız değişiklikler etkinleşecektir.
Gelelim GNU/Linux kullanıcılarının durumuna...
GNU/Linux
Bildiğiniz gibi, GNU/Linux işletim sistemlerinde YOL dizinlerini listelemek için şöyle bir komut kullanıyoruz:
echo $PATH

Bu komutun çıktısının şuna benzer bir şey olacağını biliyoruz:
/usr/local/sbin:/usr/local/bin:/usr/sbin:
/usr/bin:/sbin:/bin:/usr/games

Gördüğünüz gibi, nasıl Windows işletim sistemlerinde YOL dizinleri birbirinden ; işareti ile ayrılıyorsa, GNU/Linux dağıtımlarında da YOL dizinleri birbirinden : işareti ile ayrılıyor. Dolayısıyla GNU/Linux işletim sistemlerinde herhangi bir dizini YOL’a eklemek için şöyle bir komut kullanıyoruz:
PATH=$PATH:/yola/eklemek/istediğimiz/dizin

Bu komuttaki
Kod:
$PATH
kısmı, YOL’a yeni dizini eklerken halihazırdaki dizinlerin de silinmemesini sağlıyor. Eğer yukarıdaki komutu şöyle verecek olursanız:
PATH=/yola/eklemek/istediğimiz/dizin

YOL üzerinde önceden varolan bütün dizinler silinip, tek girdi olarak yeni eklediğiniz dizin görünecektir. Böyle bir durumda da sisteminizde pek çok programın artık çalışmadığını görürsünüz. O yüzden bu komutu verirken dikkatli olun.
Bütün bu bilgiler ışığında, mesela Desktop (Masaüstü) dizinini YOL’a eklemek için şöyle bir komut yazabiliriz:
PATH=$PATH:$HOME/Desktop

Bu şekilde masaüstü dizinini YOL’a eklemiş olduk. Yeni eklediğimiz dizini, halihazırda YOL üzerinde bulunan dizinlerden : işareti ile ayırdığımıza dikkat edin.
İsterseniz
Kod:
echo $PATH
komutuyla masaüstünüzün YOL üstünde görünüp görünmediğini kontrol edebilirsiniz. Bu sayede artık masaüstünde bulunan çalıştırılabilir dosyalar da kendi adlarıyla çağrılabilecekler. Ancak masaüstünü YOL’a eklediğinizde, masaüstünüz hep YOL üstünde kalmayacak, mevcut konsol oturumu kapatılınca her şey yine eski haline dönecektir. Eğer herhangi bir dizini kalıcı olarak YOL’a eklemek isterseniz, .profile (veya kullandığınız dağıtıma göre .bash_profile ya da .bashrc) dosyanızda değişiklik yapmanız gerekir. Mesela masaüstünü YOL’a eklemek için $HOME/.profile dosyanızın en sonuna şu satırı eklemelisiniz:
export PATH=$PATH:$HOME/Desktop

Ancak GNU/Linux’ta genel yaklaşımınız YOL’a kalıcı olarak dizin eklemek değil, ya bir dizini YOL’a geçici olarak eklemek, ya programınızı mevcut YOL dizinlerinden biri içine kopyalamak, ya da programımıza YOL dizinlerinden birisi içinden sembolik bağ vermek olmalıdır. Yani mesela masaüstünde bir programınız varsa, masaüstünü YOL’a eklemek yerine, programınızı YOL dizinlerinden biri içine (mesela /usr/bin) kopyalamak ya da o konumda bir sembolik bağ oluşturmak daha akıllıca olacaktır.
Hatırlarsanız geçen bölümde ‘çalıştırma yetkisi’ konusundan söz ederken deneme adlı bir kabuk betiği yazmıştık. Masaüstüne kaydettiğimiz bu betiği çalıştırabilmek için de ./deneme gibi bir komut kullanmıştık. Bu komutu verirken baştaki ./ işaretlerini kullanmazsak programımız hata veriyordu.
İşte bu bölümde öğrendiklerimiz sayesinde programımızın neden hata verip çalışmadığını artık daha iyi anlıyor olmalısınız. Dediğimiz gibi, deneme gibi bir komut verdiğimizde işletim sistemimiz
Kod:
echo $PATH
çıktısında görünen YOL dizinlerinin içine bakıp, bu dizinlerin herhangi birinin içinde deneme adlı bir program olup olmadığını kontrol edecektir. Eğer siz kendiniz eklemediyseniz, işletim sisteminizde masaüstü öntanımlı olarak YOL’a ekli değildir. O yüzden deneme komutunu verdiğinizde işletim sisteminiz masaüstüne bakmaz. İşte işletim sisteminin deneme adlı programı başka yerde değil de masaüstünde aramasını sağlamak için komutun başına ./ işaretlerini yerleştiriyoruz...
Tıpkı daha önce öğrendiğimiz %USERPROFILE% (veya $HOME) adlı çevre değişkeni gibi, %PATH% (veya $PATH) de çok önemli çevre değişkenlerinden biri olduğu için YOL kavramıyla bundan sonra da yeterince haşır neşir olacağız. Ayrıca birkaç bölüm sonra gerçek Python programları yazmaya başladığımızda, şu anda belki de kafanızda muğlak kalmış bazı şeyler iyiden iyiye yerine oturmuş olacak. O yüzden şimdilik konuyu daha fazla uzatmadan burada noktalıyoruz ve önemli bir konuya daha geçiyoruz.

KAYNAK: istihza.com
Cevapla
Teşekkür verenler:


Hızlı Menü:


Şu anda bu konuyu okuyanlar: 20 Ziyaretçi


10tl.net Destek Forumu -

Online Shopping App
Online Shopping - E-Commerce Platform
Online Shopping - E-Commerce Platform
Feinunze Schmuck Jewelery Online Shopping