Linux Ortam Değişkenleri-2
- Huseyin Şahan
- 17 Mar
- 4 dakikada okunur
Bu blog yazımızda PATH değişkeni ile kabuğun çalıştırılabilir dosyaları nerede arayacağını göreceğiz ve PATH değişkenine istediğimiz dizini ekleyeceğiz. Daha sonra değişkenleri ekleyebileceğimiz önemli kabuk dosyalarını ele alacağız ve bu dosyalara kendi değişkenlerimizi ekleyeceğiz. En sonda ise bash kabuğunda nasıl bir değişken dizisi oluşturusunuz ve bunlara erişirsiniz bu konuları ele alacağız. Çok detaylı ve kapsamlı bir blog yazısı olacaktır.
PATH Ortam Değişkeni İle Çalıtırılabilir Dizinler
Daha önce defalarca komut kullanmışsınızdır.Bu komutların çalıştırıldığı dizinler vardır.Siz bir komut girdiğinizde kabuk bunu çeşitli çalıştırılabilir dosya dizinlerinde arar ve eğer bulursa sizin komutunuzu çalıştıracaktır. İşte şu komut ile çalıştırılabilir komutların arandığı dizinleri görebilirsiniz.
darkside@debian:~$ echo $PATH
Burada aşağıdaki gibi çeşitli dizinleri görebilirsiniz.

Çalıştırılabilir dosyanın arandığı dizini görebilirsiniz. Örneğin girdiğiniz ls komutu aslında bu dizilerde aranıyor. Komut dosyasının nerede olduğuna bakın.
darkside@debian:~$ which ls
/usr/bin/ls
/usr/bin/ls dizini içinde yer alıyor. Bu bizim PATH değişkenimizin içerdiği bir dizindi.
PATH Ortam Değişkenine Dizin Ekleme
Şimdi PATH ortam değişkenine istediğimiz dizini nasıl ekleriz veya dizin kaldırırz bu işlemleri göreceğiz. Öncelikle PATH ortam değişkenine bir dizin eklemek için aşağıdaki komutu deneyin.
darkside@debian:~$ PATH=$PATH:/home/darkside/scripts/
Ana dizinde bir klasör oluşturdum scripts adlı ve bu dizini okumasını sağladım.
İşte tekrardan PATH ortam değişkenine bakalım ve eklediğimiz dizin mevcut mu görelim.
darkside@debian:~$ echo $PATH
Evet çıktıya bakın:
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/darkside/scripts/
Burada eklediğimiz dizini en sonda görebilirsiniz. Şimdi oluşturduğunuz script klasörüne gidin ve burada bir dosya açın. Aşağıdaki komutu girin basit bir komut olan echo komutunu girelim:
echo "Bu benim programım ve bu artık ismini yazınca çalışıyor"
dosyayı benimprog şeklinde kaydedin. Artık bu dosyayı istediğimiz gibi sadece isim vererek heryerde çalıştırabiliriz. Ancak bu dosyayı çalıştırılabilir kılmamız lazım. Yani varsayılan olarak dosya izinlerinde bu dosya çalıştırılamaz eğer çalıştırırsanız erişim engeli verir. Bu sorunu çözmek için aşağıdaki komutu girin ve çalıştırma izni ekleyin.
darkside@debian:~/scripts$ chmod +x benimprog
Burada +x ile çalıştırma izni ekledik. Şimdi dizin değiştirelim ve terminale benimprog yazarak komutun çalıştığını ispatlayalım:
darkside@debian:~/scripts$ cd /etc
/etc dizinine gittik yani dosyamızdan uzak bir yere ve komutu çalıştıralım. Sadece dosya ismini verin.
darkside@debian:/etc$ benimprog
Artık komutumuzun çalıştığını görebilirsiniz.

Burada eğer terminalinizi kapatıp geri açarsanız bu komut çalışmaz ve değiştirdiğiniz PATH değişkeni eski haline döner. Bu değişkeni kalıcı olarak ayarlamak için önce kabuk dosyalarına değineceğiz. Daha sonra bu değeri kalıcı olarak değiştirmeyi daha net anlamış olacaksınız.
Kabuk Dosyalarını Keşfetmek
Linux sistemlerinde kabuk (shell) başlatıldığında belirli dosyalar, kullanıcının çalışma ortamını yapılandırmak ve başlangıçta belirli komutları çalıştırmak için kullanılır. Bu dosyalara başlangıç dosyaları veya ortam dosyaları denir. Bash shell (Bash kabuğu) çeşitli başlangıç dosyalarını okur ve işler. Bu dosyalarda yapılan değişiklikler, kullanıcı oturumu başlatıldığında geçerli olur ve kalıcı hale gelir.
Bir login shell (giriş kabuğu) başlatıldığında, bash shell aşağıdaki dosyaları arar ve sırasıyla işler:
/etc/profile: Tüm kullanıcılar için genel bir başlangıç dosyasıdır. Sistem genelinde yapılacak değişiklikler burada yapılır.
$HOME/.bash_profile: Kullanıcıya özel giriş kabuğu başlangıç dosyasıdır. Bu dosya /etc/profile dosyasının ardından işlenir.
$HOME/.bashrc: Bu dosya genellikle interaktif kabuklar için kullanılır, yani kullanıcı her yeni terminal oturumu açtığında çalışır. $HOME/.bash_profile dosyasından source ~/.bashrc komutu ile çağrılabilir.
$HOME/.bash_login: Eğer $HOME/.bash_profile dosyası mevcut değilse, bash bu dosyayı kullanabilir. Ancak genellikle daha az kullanılır.
$HOME/.profile: Eğer diğer dosyalar yoksa, bu dosya da login shell başlatıldığında işlenebilir.
Kullanıcı sisteme giriş yaptıktan sonra kabuk çalıştırıldığında, bash önce /etc/profile ve ardından $HOME/.bash_profile, $HOME/.bashrc, $HOME/.bash_login ve $HOME/.profile dosyalarını sırasıyla okur.
Değişkenleri Kalıcı Hale Getirmek
Değişkenleri kalıcı hale getirmek için .bashrc veya .bash_profile dosyalarını kullanabiliriz. Biz burada değişkenleri .bashrc dosyasına ekleyeceğiz. Önceki blog yazımızda değişken oluşturmayı öğrenmiştik. Artık burada değişkenimizi terminal kapatılıp açılsa bile kalıcı hale getireceğiz.
Aşağıdaki komutu kullanarak .bashrc dosyasını açın:
darkside@debian:~$ nano ~/.bashrc
Biz burada PATH global değişkenine kendi script dizinimizi kalıcı olarak ekleyeceğiz. Önceki terminalde çalıştırdığımız komutu şimdi dosyaya ekleyeceğiz. Ancak bunu export komutu ile yapacağız. Bu PATH değişkeninin yeni değerini global olarak gösterecektir.
export PATH=$PATH:/home/darkside/scripts/
Dosyayı kaydedin ve çıkın. source komutu ile değişikliği hemen uygulayın. Bu komutu uygulamazsanız terminali tekrar kapatıp açabilirsiniz.
darkside@debian:~$ source ~/.bashrc
Artık benimprog adlı komutumuzu terminal kapatılıp açılsa bile kabuk ayar dosyamıza kaydettiğimiz için çalışacaktır.
darkside@debian:~$ benimprog
Ancak bu komut sadece darkside kullanıcısı için geçerli olacaktır. Yani eğer başka kullanıcı bu komutu çalıştırısa örneğin:
usertest@debian:/etc$ benimprog
Bu hata verecektir. Çünü .bashrc dosyasını değiştirmek sadece o kullanıcının ayarlarını değiştirir. Şimdilik sadece bu kadarını bilseniz yeter. İlerleyen ksımlarda tüm kullanıcılar içindeğeri nasıl değiştirebileceğimizi göreceğiz. Ancak önce dosya izinlerini işlememiz gereklidir. Bunu ilerleyen bloglarda göstermiş oluruz.
Değişken Dizisi Oluşturma
Bir ortam değişkenini dizi olarak tanımlamak için parantez kullanılır. Aşağıdaki örnek bir dizi oluşturacaktır.
darkside@debian:~$ benimdizi=(bir iki üç dört beş)
Eşitlikde boşluk olmamasına dikkat edin. Artık bir değişken dizimiz var. Buna erişmek için şöyle bir komut yazalım:
darkside@debian:~$ echo $benimdizi
Bu yalnızca sizin ilk öğenizi gösterecektir.
bir
Ancak istediğimiz değişken öğesinede erişebiliriz. Burada süslü parantez kullanımına dikkat edin.
darkside@debian:~$ echo ${benimdizi[2]}
Burada 2. indeksteki değer olanüç değerini göreceğiz. Tüm dizielemanlarını yazdırmak için:
darkside@debian:~$ echo ${benimdizi[*]}
* ile tüm elemanları işaret edin.
Dizi elemanlarını silmek için uset komutunu kullanın:
darkside@debian:~$ unset benimdizi[2]
Burada üç değerini kaldırdık.
Tüm diziyi kaldırmak için:
darkside@debian:~$ unset benimdizi
Komutunu kullanabiliriz. Burada temel olarak bash betiğinde değişken dizisi tanımlamayı ele aldık. İlerleyen bloglarda bu konulara derinlemesine girip kendi betiklerimizi yazacağız.
Evet bir blog yazımızın daha sonuna geldik. Hepinize iyi günler hoşçakalın....
Comments