top of page

Linux Ortam Değişkenleri-1

  • Yazarın fotoğrafı: Huseyin Şahan
    Huseyin Şahan
  • 17 Mar
  • 6 dakikada okunur

Bu blog yazısında kabuktaki ortam değişkenlerini nasıl keşfedeceğiniz ve ortam değişkenlerini nasıl ayarlayacağınız anlatılacaktır.


Ortam değişkenleri kabukta tutulan ve gerektiğinde uygulamalar arasında paylaştırılabilen değişkenlerdir.Diğer yazılımlar tarafından paylaşılması işlemleri kolaylaştırıyor. İlerleyen blog yazılarımızda biz kabuk betik dosyaları yazarken bu değişkenlerden yararlanacağız.


İki tür değişken türü bulunmaktadır. Bunlardan birincisi Global ve ikincisi Lokal değişkenlerdir. Şimdi bu değişken türlerine detaylıca değinelim.


Global Ortam Değişkenlerini Keşfetme


Global ortam değişkenleri, ana kabuktan ve onun türettiği alt kabuklardan erişilebilen, yani tüm terminal oturumlarında erişilebilen değerlerdir. Bu değerleri görüntülemek için aşağıdaki komutları kullanabilirsiniz:

darkside@debian:~$ printenv

printenv komutu size sistemdeki tüm global değişkenleri gösterecektir. Aşağıda komutumuzun çıktısı verilmiştir. Bu çıktı sistem genelindeki tüm global değişkenleri vermiştir.


ree

İstersek global değişkenlerden sadece birinin değerini görüntüleyebiliriz. Bunun için yine printenv komutuna bir değişkeni parametre olarak vereceğiz. İşte HOME ortam değişkeni size kullanıcınıcı olarak hangi ana dizini kullandığınızı gösterecektir.

darkside@debian:~$ printenv HOME

İşte komut çıktısı bu olacaktır.


ree

Bu HOME global değişkeninin değerini gösterdi. printenv komutuna benzer env komutuda size tüm global değişkenleri gösterecektir.

darkside@debian:~$ env

İşte komut çıktısı printenv ile aynı olacaktır.

ree

Ancak env komutu ilebir değişkenin değerini elde edemezsiniz. yani şöyle bir komut kullanmayın hata verecektir.

darkside@debian:~$ env HOME
env: `HOME': Böyle bir dosya ya da dizin yok

gibi bir hata alabilirsiniz. Bir değişkenin değerini görüntülemeniz gerektiğinde printenv kullanın veya değişkenin değerini echo komutu ile yazdırın. Değişkenimizin değerini yazdırmak için $ işareti ile değişkenimizi belirtiyoruz. Bash kabuğunda değişkenleri bu şekilde ifade ediyoruz.

darkside@debian:~$ echo $HOME

İşte komutun çıktısı yine printenv ile aynı olacaktır.

ree

HOME değişkeni aslında bir dizin ifade ediyor ve biz bunu ls veya cd gibi dosya keşif araçlarıyla kullanabiliriz. İşte ls komutu ile değişkeni kullandık.

darkside@debian:~$ ls $HOME

Burada komut çıktısı aşağıdaki gibi olacaktır. Sonuçta bu bir dizin.

ree

Yani bu komut şu komutla aynı olacaktır.

darkside@debian:~$ ls /home/darkside

Bu değişkenler global değerler olduğu için alt kabuktan erişim sağlayabiliriz. Bunun için aşağıdaki komutu girerek yeni bir alt kabuk oluşturun ve ps komutu ile kontrol edin. Eğer bunlar hakkında bilginiz yoksa önceki blog yazılarımızı okuyun.

darkside@debian:~$ bash

Bu yeni bir çock kabuk oluşturdu. Kabuğu kontrol edelim.

darkside@debian:~$ ps -f

İşte alt kabuk oluştu.

ree

PID değeri 5996 olan bizim alt kabuğumuz olacaktır. Artık bulunduğumuz kabuk alt kabuk. Aynı komutu burada çalıştırın.

darkside@debian:~$ echo $HOME

Yine aynı sonucu elde edeceksiniz. Global değişkenlere alt kabuk veya ana kabuktan erişilebilir. Artık isterseniz exit komutu ile alt kabuğu kapatabilirsiniz. Artık nasıl kendi global değişkenlerimiz oluşturacağımızı görelim. örneğin benim_degerim adında bir değişken tanımlayalım ve bunu global değişken yapmak için export komutu kullanın.

darkside@debian:~$ benim_degerim="10 para eder"

Burada değeri tanımlarken eşitlik arasında boşluk olmamalıdır. Bu hatalı bir durum olacaktır. Boşluk olmamasına dikkat edin. Daha sonra bu değişkeni global yapalım.

darkside@debian:~$ export benim_degerim

Artık değişkenimiz global oldu. Bu değişkeni yazdıralım.

darkside@debian:~$ echo $benim_degerim

İşte komutumuzun çıktısı şunlar olacaktır.

ree

Artık bu değişkene alt kabuklardan erişebiliriz. İşte yeni bir alt kabuk oluşturun:

darkside@debian:~$ bash

Değişkeni yazdırın.

darkside@debian:~$ echo $benim_degerim

Alt kabuğa geçmemize rağmen bu değişken hala yazdırılıyor. Çünlü export komutu ile değişkeni global hale getirdik. Ancak her ne kadar global değişken olsada bu değişkenin kalıcı olduğu anlamına gelmez. Bunu "Linux Ortam Değişkenleri" serisinin sonraki blogunda ele alacağız.


Lokal Ortam Değişkenlerini Keşfetme


Lokal ortam değişkenleri yalnızca oluşturduğunuz kabukta geçerli ve alt veya üst kabuklardan erişilemez. Yerel ortam değişkenlerini görüntülemek zorduk. Ancak set komutunu kullanarak yerel ve global değişkenlerin tümütü görebiliriz. Unutmayın bu karışık bir değişken listesi verecektir.

darkside@debian:~$ set
ree

Peki kendi yerel değişkenlerinizi nasıl ayarlarsınız bunun üzerine gidelim. Önce benim_degerim adındaki bir değişkeni yazdırmaya çalışalım sonuç hiçbirşey çünkü bu değeri tanımlamadık.

darkside@debian:~$ echo $benim_degerim

Ancak bu değişkeni tanımlayabiliriz.

darkside@debian:~$ benim_degerim="10 para etmez"

Değişkenin adını ve eşitleyeceğimiz değeri yazdık. Artık echo komutu ile değişkeni yazdırırsak sonuç şu olacaktır.

ree

Artık yerel bir değişkenimiz oldu. Ancak yerel değişkenlere alt kabuktan erişemeyiz. Yada alt kabukta oluşturusanız bu değişkeni ve alt kabuğu exit ile kapatırsanız yine erişemezsiniz. Bu değişken sadece bulunduğu kabuk oturumunda geçerlidir. İşte bash komutu ile alt kabuğa geçtik ve değişkeni yazdırmaya çalıştık.

ree

Burada alt kabuktan erişemeyiz. Değişken yalnızca ana kabukta geçerlidir. exit ile bu kabuğu kapatır ve üst kabuğa giderseniz tekrardan erişebilirsiniz. Ancak bu değerler kalıcı olmayacaktır.


Değişkenleri Kaldırma


Global olan yada olmayan değişkenleri unset komutunu kullanarak kaldırabiliriz. Örneğin dah önceden oluşturduğumuz benim_degerim adlı değişkeni kaldırmak için:

darkside@debian:~$ unset benim_degerim

Aşağıdaki çıktıyı inceleyin:


ree

Burada değişkenimiz kaldırmış olduk. Aynı işlemleri global değişkenleri kullanarakda yapabilirsiniz.


Ortam Değişkenleri Liste


Ortam değişkenlerini kısaca verdik. Aşağıdaki açılabilir listeye tıklayarak değişkenleri görebilirsiniz. Bu değişkenler Bash kabuğu için geçerlidir.


Bash Ortam Değişkenleri

  • BASH: Şu anki bash kabuğunun tam yol adı.

  • BASH_ALIASES: Şu anki alias'ların ilişkilendirildiği bir dizi.

  • BASH_ARGC: Bir alt program veya shell script'e geçirilen parametre sayısı.

  • BASH_ARCV: Bir alt program veya shell script'e geçirilen parametreleri içeren bir dizi.

  • BASH_CMDS: Shell'in çalıştırdığı komutların yerlerini içeren bir dizi.

  • BASH_COMMAND: Şu anda çalıştırılmakta olan komut.

  • BASH_ENV: Bash script çalıştırılmadan önce başlatma dosyasını çalıştırır.

  • BASH_EXECUTION_STRING: bash -c seçeneğiyle geçirilen komutlar.

  • BASH_LINENO: Şu anda çalışan shell fonksiyonunun kaynak kodu satır numarasını içeren bir dizi.

  • BASH_REMATCH: Düzenli ifadelerle yapılan eşleşmelerin alt desenlerini içeren salt okunur bir dizi.

  • BASH_SOURCE: Şu anda çalışan shell fonksiyonunun kaynak kodu dosya adlarını içeren bir dizi.

  • BASH_SUBSHELL: Alt kabuk ortamının mevcut iç içe geçme seviyesi.

  • BASH_VERSINFO: Şu anki bash kabuğunun sürüm numaralarını içeren bir dizi.

  • BASH_VERSION: Şu anki bash kabuğunun sürüm numarası.

  • BASH_XTRACEFD: set -x ile oluşturulan izleme çıktısını yönlendirmek için kullanılabilir dosya tanımlayıcısı.

  • BASHOPTS: Şu anda etkin olan bash kabuk seçeneklerinin listesi.

  • BASHPID: Mevcut bash işleminin işlem kimliği (PID).

  • COLUMNS: Terminal genişliği.

  • COMP_CWORD: Tamamlamada kullanılan kelimenin dizindeki indeksini içerir.

  • COMP_LINE: Geçerli komut satırı.

  • COMP_POINT: Komut satırının başlangıcından itibaren geçerli imleç konumunun indeksini içerir.

  • COMP_KEY: Tamamlama için son kullanılan tuş.

  • COMP_TYPE: Tamamlama fonksiyonunun çağrılmasına neden olan tamamlamanın türünü belirten bir tamsayı değeri.

  • COMP_WORDBREAKS: Readline kütüphanesinin kelime ayırıcı karakterleri.

  • COMP_WORDS: Geçerli komut satırındaki bireysel kelimeleri içeren bir dizi.

  • COMPREPLY: Bir shell fonksiyonu tarafından oluşturulan olası tamamlamaları içeren bir dizi.

  • COPROC: Adlandırılmamış bir eşzamanlı işlem (coprocess) I/O dosya tanımlayıcılarını içeren bir dizi.

  • DIRSTACK: Geçerli dizin yığını içeriğini tutan bir dizi.

  • EMACS: Emacs shell buffer çalışıyorsa, düzenleme devre dışı bırakıldığında 't' olarak ayarlanır.

  • ENV: Bash shell script çalıştırılmadan önce başlatma dosyasını çalıştırır.

  • EUID: Geçerli kullanıcı için etkin kullanıcı kimliği (UID).

  • FCEDIT: fc komutu tarafından kullanılan varsayılan düzenleyici.

  • FIGNORE: Dosya adı tamamlaması sırasında göz ardı edilecek dosya uzantılarının listesi.

  • FUNCNAME: Şu anda çalışan shell fonksiyonunun adı.

  • FUNCNEST: İzin verilen fonksiyon iç içe geçme seviyesinin maksimum değeri.

  • GLOBIGNORE: Dosya adı genişletmesi sırasında göz ardı edilecek dosya adlarını tanımlayan desenler.

  • GROUPS: Geçerli kullanıcının üye olduğu grupların listesini içeren bir dizi.

  • histchars: Geçmiş genişletmesi için kullanılan karakterler.

  • HISTCMD: Geçerli komutun tarih numarası.

  • HISTCONTROL: Shell geçmiş listesinde hangi komutların kaydedileceğini kontrol eder.

  • HISTFILE: Shell geçmiş listesinin kaydedileceği dosyanın adı.

  • HISTFILESIZE: Geçmiş dosyasına kaydedilecek maksimum satır sayısı.

  • HISTTIMEFORMAT: Bash geçmişinde her komutun zaman damgasını yazdırmak için kullanılan biçim dizgesi.

  • HISTIGNORE: Hangi komutların geçmiş dosyasına kaydedilmeyeceğini belirlemek için kullanılan desenler.

  • HISTSIZE: Geçmiş dosyasına kaydedilen maksimum komut sayısı.

  • HOSTFILE: Shell'in bir hostname tamamlama için okuması gereken dosyanın adı.

  • HOSTNAME: Geçerli ana bilgisayar adı.

  • HOSTTYPE: Bash kabuğunun çalıştığı makineyi tanımlayan bir dize.

  • IGNOREEOF: Shell'in çıkmadan önce kaç ardışık EOF karakteri alması gerektiğini belirtir.

  • INPUTRC: Readline başlangıç dosyasının adı.

  • LANG: Shell için dil yerelleştirme kategorisi.

  • LC_ALL: LANG değişkenini geçersiz kılar ve yerelleştirme kategorisini belirler.

  • LC_COLLATE: Dizgi sıralama için kullanılan yerelleştirme düzenini belirler.

  • LC_CTYPE: Dosya adı genişletmesi ve desen eşlemesi için karakterlerin yorumlanmasını belirler.

  • LC_MESSAGES: Çift tırnaklı string'lerde kullanılan yerelleştirme ayarlarını belirler.

  • LC_NUMERIC: Sayıları biçimlendirirken kullanılan yerelleştirme ayarlarını belirler.

  • LINENO: Şu anda çalışan script'teki satır numarası.

  • LINES: Terminaldeki satır sayısını belirtir.

  • MACHTYPE: Sistem tipini cpu-company-system formatında tanımlar.

  • MAPFILE: mapfile komutuyla okunan metni tutan bir dizi.

  • MAILCHECK: Shell'in yeni e-postaları kontrol etme sıklığı.

  • OLDPWD: Shell'deki önceki çalışma dizini.

  • OPTERR: getopts komutu tarafından oluşturulan hataların gösterilip gösterilmeyeceğini belirtir.

  • OSTYPE: Shell'in çalıştığı işletim sistemini tanımlayan bir dize.

  • PIPESTATUS: Ön planda çalışan işlemlerin çıkış durumu değerlerini içeren bir dizi.

  • POSIXLY_CORRECT: Eğer ayarlanmışsa, bash POSIX modunda başlar.

  • PPID: Bash shell'in ana işleminin işlem kimliği (PID).

  • PROMPT_COMMAND: Birincil istemciyi görüntülemeden önce çalıştırılacak komut.

  • PROMPT_DIRTRIM: \w ve \W dizgi kaçışları kullanıldığında gösterilecek son dizin isimlerini sınırlayan tam sayı.

  • PS3: select komutu için kullanılan istemci.

  • PS4: Bash -x parametresi kullanıldığında komut satırının önünde gösterilen istemci.

  • PWD: Geçerli çalışma dizini.

  • RANDOM: 0 ile 32767 arasında rastgele bir sayı döndürür.

  • READLINE_LINE: bind -x komutu kullanılırken Readline tampon içeriği.

  • READLINE_POINT: bind -x komutu ile tampon içeriğinin geçerli konumunun indeksini içerir.

  • REPLY: read komutunun varsayılan değişkeni.

  • SECONDS: Shell başlatıldığından beri geçen süre (saniye cinsinden).

  • SHELL: Bash kabuğunun tam yol adı.

  • SHELLOPTS: Etkin olan bash shell seçeneklerinin listesi.

  • SHLVL: Shell seviyesi, her yeni bash shell başlatıldığında bir artırılır.

  • TIMEFORMAT: Shell'in zaman değerlerini nasıl göstereceğini belirten biçim.

  • TMOUT: select ve read komutlarının giriş bekleme süresi (saniye cinsinden).

  • TMPDIR: Bash shell'in geçici dosyalar için oluşturduğu dizin.

  • UID: Geçerli kullanıcının gerçek kullanıcı kimliği (UID).

Bu açılabilir listede bash kabuğu için çevresel değişkenler ve anlamları verilmiştir.


Evet bu blog yazımızda sizlere global ve lokal değişkenlerden bahsettik. Değişkenleri nasıl ayarlayacağınız ve nasıl kaldıracağınızı gösterdik. Sonraki blog yazımızda bu değişkenleri nasıl kalıcı hale getirebiliriz bunu göstereceğiz. Hoşçakalın...

Comments


bottom of page