**Çevre değişkenleri, çevresel değişkenler** ya da **ortam değişkenleri** (ing. environment variable), işletim sistemi seviyesinde konfigüre edilebilen ve bilgisayar işlemleri tarafından erişilebilen değişkenlerdir. Çoğu kez belli programların ve dosyaların konumlarını (ing. path) ve birden fazla işlem tarafından kullanılabilen bilgi ve ayarları tutmak için kullanılırlar. Çoğunlukla bir karakter dizisi (ing. string) olurlar.

Ortam/çevre kelimesi ile kast edilen programın çalıştırma ortamıdır (ing. run-time environment). Böylece aynı işlem farklı çalıştırma ortamlarında ekstra bir konfigürasyona gerek kalmadan çalışabilir, aynı ortamdaki farklı işlemler aynı veriye ortam değişkenleri üzerinden ulaşabilirler.

Örneğin çalışan bir işlem TEMP ortam değişkeninin değerine bakarak geçici dosyalarını saklayabileceği dizin konumunu (path) öğrenebilir. Herhangi bir nedenle bu konum değiştirilmek istendiğinde yazılımlarda bir değişikliğe gerek kalmadan TEMP ortam değişkeni değiştirilir.

Aynı kavram için kullanılan bir başka terim de *global değişken*dir. Kullanıcılar ve bilgisayar programları bu değişkenlerin değerlerini okuyabilir ve/veya değiştirebilirler.

Unix ve Unix-tipi işletim sistemleri
------------------------------------

### Komut satırı

Linux ve BSD gibi birçok Unix tipi işletim sisteminde çevre değişkenleri *komut satırı yorumlayıcısı* (Unix-shell) çalışmaya başladığında okunur ve kullanılır. Daha önceden tanımlanmış olan bu değişkenler Unix kabuğu çalışmaya başladığında bir veya birçok konfigürasyon dosyasından okunur ve buna göre işlemler yapılır. Örneğin Bourne-Shell'de bu değişkenler */etc/profile* dizininde tutulur. Ayrıca *Shell* kullanıcının uyarlayabileceği kullanıcı tarafından belirlenen çevre değişkenlerini kullanıcının "home" dizininde belli dosyalarda saklar. Daha önce tanımlanmış olan çevre değişkenler *printenv* gibi bir komutla görülebilir. *env* komutu/programı ise bir programın değiştirilmiş bir ortamda (başka çevre değişkenleri altında) çalışması sağlanabilir ya da çevre değişkenleri değiştirilebilir. Her iki komut da coreutils'in parçalarıdır.

### Öntanımlı çevre değişkenleri

* **PATH** − Konumlar (path) listesidir. Tam konum (fullpath) belirtilmeden komut girildiğinde işletim sistemi komutu bu listedeki konumlarda arar.
* **HOME** − Kullanıcının dosya sistemi içindeki ana dizinini (home directory) gösterir.
* **TERM** − Kullanılan bilgisayar terminalinin türünü ya da terminal emulatörünü tanımlar.
* **MAIL** − Kullanıcının e-postalarının bulunduğu konumu belirtir.

Microsoft
---------

MS-DOS ve Windows kabuğunda (komut işlemcisi) işlevselliği aynıdır. Windows'ta yeni bazı fonksiyonlar ve Standart değişkenler eklenmiştir.

### Kaydetme

Çevre değişkenler komut satırından veya .cmd ve .BAT gibi programlar tarafından *SET* komutlarıyla kaydedilir. (Örneğin SET PROMPT=$P$G) SET komutu tek başına kullanıldığında ise tüm çevre değişkenler listelenir. Değişken değerlerini silmek için ise değişken adından sonra sadece = işareti verilir. (Örneğin SET PROMPT=).

### Sorgulama

Elde edilmek istenen değişken *%* işaretleri arasında kullanılır. Örneğin APPDATA değişkeninin tuttuğu dizine gitmek için CD %APPDATA% şeklinde bir komut verilir.

### Öntanımlı çevre değişkenleri

| Variable | Windows XP | Windows Vista/7 | Açıklama |
| --- | --- | --- | --- |
| %ALLUSERSPROFILE% (%PROGRAMDATA%) | C:\Dokumente und Einstellungen\All Users | C:\ProgramData |  |
| %APPDATA% | C:\Dokumente und Einstellungen\{username}\Anwendungsdaten | C:\Users\{username}\AppData\Roaming |  |
| %COMPUTERNAME% | {computername} |  |
| %COMMONPROGRAMFILES% | C:\Programme\Gemeinsame Dateien | C:\Program Files\Common Files |  |
| %COMMONPROGRAMFILES(x86)% | C:\Programme (x86)\Gemeinsame Dateien | C:\Program Files (x86)\Common Files |  |
| %COMSPEC% | %SystemRoot%\System32\cmd.exe | Komut satırının olduğu dizin %SystemRoot% uyumlu genişlemeDOS'da da geçerli |
| %HOMEDRIVE% | C:\ | C:\ |  |
| %HOMEPATH% | \Dokumente und Einstellungen\{username} | \Users\{username} |  |
| %LOCALAPPDATA% | *n/a* | C:\Users\{username}\AppData\Local |  |
| %LOGONSERVER% | \\{domain\_logon\_server} |  |
| %OS% | Windows\_NT | Windows\_NT |  |
| %PATH% | %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem | %SystemRoot% uyumlu genişletmeDOS'da da geçerli |
| %PATHEXT% | .COM, .EXE, .BAT, .CMD, .VBS, .VBE, .JS, .WSF, .WSH | .com, .exe, .bat, .cmd, .vbs, .vbe, .js, .jse, .wsf, .wsh, .msc |  |
| %PROGRAMFILES% | C:\Programme | C:\Program Files |  |
| %PROGRAMFILES(X86)% | C:\Programme (x86) | C:\Program Files (x86) |  |
| %PROMPT% | $P$G | DOS'da da geçerli |
| %SystemDrive% | C:\ | C:\ |  |
| %SystemRoot% | C:\Windows (Windows 2000 und davor: C:\WINNT) | C:\Windows |  |
| %TEMP% oder %TMP% | C:\Windows\TEMP |  |
| %USERDOMAIN% | {userdomain} |  |
| %USERNAME% | {username} | Aktif kullanıcı adı |
| %USERPROFILE% | %SystemDrive%\Dokumente und Einstellungen\{username} | C:\Users\{username} |  |
| %WINDIR% | C:\Windows | C:\Windows | Tarihsel biçim(16-Bit-Windows), uyum sağlamak için tutulmakta. %SystemRoot% ile sürekli aynı olmalı. |
| %PUBLIC% | *n/a* | C:\Users\Public |  |
| %PSModulePath% | *n/a* | %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\ |  |

Notlar
------

1. ↑  Noktalı virgül ile ayrılarak tanımlanmış bir *Path* varsa, komut aktif dizinden bulunamazsa, sırayla bu dizinlerde aranır ve ilk bulunduğu yerde çalıştırılır.
2. ↑  Güvenlik açısından tüm kullanıcıların ulaşabileceği genel bir dizin yerine, kullanıcı bazlı örneğin %HOMEDRIVE%%HOMEPATH%\TEMP gibi bir dizin olması önerilir.