• unix'te ortaya cikmi$ konsept.. tum application'lar tarafindan okunabilen bir degi$ken yiginina verilen isim.. dos prompt'ta veya unix shell'de set yazip enter'a basinca goreceginiz degi$kenlere verilen isim.. en me$hur environment variable "path"'tir.. icerikleri ve tutulma $ekilleri i$letim sistemine gore degi$ir.. (bkz: env)
  • ornek olarak "query string" verilebilir
  • her shell invoke edildiğinde çalışmadan önce okuduğu bir profile dosyasına sahiptir, bu dosyanın içerisinde belirtilmesi belirli bir değişkenin bu muameleyi görmesini sağlar, örnek olarak bash kullanılması durumunda
    /etc/profile dosyası içerisinde

    $path="/bin:/usr/bin"
    $path=$path:"/usr/local/bin"

    yazılması $path adlı environment variable'ının /bin:/usr/bin:/usr/local/bin değerini almasını sağlar. eğer bu işlem sistemdeki tüm kullanıcıları etkilemesin isteniyorsa aynı işlem kullanıcının $home değişkeni altındaki .profile dosyasında yapılır.
  • (bkz: export)
  • unix'te nasıl saklanıyor bilmiyorum ama windows'da şu anki hali ile, kötü yazılmış bir installer scripti ya da program kodu ile kolaylıkla bir değişkene ait veriler (özellikle de path, lib gibi değişkenler) komple silinebilir. vista'da belki bu sistem değişmiştir.

    windows xp'de genel sistem değişkenleri registry'de hkey_local_machine\system\currentcontrolset\control\session manager\environment adresinde tutulurken, kullanıcı değişkenleri de hkey_current_user\environment adresinde tutuluyor.
  • tüm 64 bit destekli intel işlemcilerde "environment variables" penceresinin "system variables" kısmında "processor_architecture"un amd64 olarak görünmesi ilginç bir durumdur.
  • (bkz: ortam adamı)
  • linux terminalinde export yazarak oluşturabilirsiniz.

    export key=value

    ama bu sadece mevcut shell'de geçerlidir, terminali kapatıp açınca kaybolur.
  • c'de baby shell yazarken getenv() fonksiyonunu kullanıyorum. user inputuyla match edip recursive bir şekilde pathleri gezip aranan komutu bularak execute etmesini istiyorum ancak getenv() çözemiyor.

    $path : '/sbin:/bin:/usr/local/games:/usr/games':

    column by column splitlese bile gidip konumu bulamıyor.

    usr/bin ile /bin 'in elle tutalabilir bir farkı da yok desek bu env variable tam olarak nasıl kullanılıyor?

    illa pointer tanımlayıp root pathden gezdiren bir path finder algoritması mı yazmak gerekiyor?

    nedir yani hatam nerededir? bileni yok mudur bunun?

    edit: çözüldü.
hesabın var mı? giriş yap