Zmienna środowiskowa
Zmienna środowiskowa (ang. environment variable) to nazwana wartość, zazwyczaj zawierająca ciąg znaków, przechowywana i zarządzana przez powłokę. Zmienna środowiskowa może wpływać na działanie procesów uruchamianych w systemie operacyjnym i wtedy staje się pewnym mechanizmem komunikacji lub też przechowywać wartość w celu jej późniejszego wykorzystania.
W systemach uniksowych, a także w systemach DOS i Windows każdy proces posiada swój zestaw zmiennych środowiskowych. Nowo tworzony proces dziedziczy zmienne środowiskowe swojego procesu rodzicielskiego, chyba że ten ostatni zmieni wartości niektórych z nich podczas tworzenia procesu potomnego.
Zmienne środowiskowe odgrywają ważną rolę i większość programów uzyskuje różne parametry poprzez zmienne środowiskowe.
DOS i Windows
Zakres zmiennych w Windows
Zmienne ustawiane w powłoce systemu Windows (linii poleceń) nie mają wpływu na działanie innych programów. Po zamknięciu okna linii poleceń wszystkie ustawienia są tracone. Podobnie zmiany wprowadzone w systemie nie są widoczne od razu w ramach danej powłoki, ponieważ działa ona na kopii zmiennych środowiskowych.
Aby zmiany w zmiennych środowiskowych były trwałe, muszą zostać zmienione odpowiednie wpisy w rejestrze systemowym.
- Dla danego użytkownika zmienne są w gałęzi HKCU\Environment.
- Ogólne zmienne znajdują się w gałęzi HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.
Operacje na zmiennych
Trwałe zmiany są możliwe przez modyfikację rejestrów systemowych, ale także przez wybranie kolejno Właściwości systemu → Zaawansowane → Zmienne środowiskowe (Właściwości systemu są uruchamiane np. poprzez jednoczesne wciśnięcie klawiszy ⊞ Windows i Pause; w systemie Windows 7 analogiczne okienko jest uruchamianie dopiero po wejściu w Zaawansowane ustawienia systemu).
Zmienne środowiskowe można także zmieniać z linii poleceń, ale tylko dla programów uruchamianych w ramach tejże powłoki (zob. zakres zmiennych w Windows).
Wartość zmiennej o nazwie VAR można sprawdzić poleceniem:
set VAR
lub
echo %VAR%
Wszelkie odwołania do zmiennych wykonuje się poprzez umieszczenie nazwy zmiennej między znakami %. Wielkość liter w nazwie nie ma znaczenia (%var% oraz %VAR% to odwołanie do tej samej zmiennej). Poleceniem set można wyświetlić wszystkie zmienne (w przypadku bez podania parametrów) lub rozpoczynające się od wpisanych znaków (np. set Pa wyświetli wszystkie zmienne zaczynające się na PA).
Zmienne ustawia się wpisując polecenie w formacie:
set VAR=tu nowa wartość
Można także podać poprzednią wartość zmiennej np.:
set PATH=%PATH%;C:\Moja biblioteka
Typowe wartości w systemach Windows
Uwaga: nazwy w nawiasach klamrowych są nazwami zależnymi od lokalnej konfiguracji systemu, np: {username} oznacza nazwę bieżącego użytkownika
Zmienna środowiskowa | Windows XP | Windows Vista / 7 / 8 / 8.1 / 10 |
---|---|---|
%ALLUSERSPROFILE% | C:\Documents and Settings\All Users | C:\ProgramData |
%APPDATA% | C:\Documents and Settings\{username}\Application Data | C:\Users\{username}\AppData\Roaming |
%COMPUTERNAME% | {computername} | {computername} |
%COMMONPROGRAMFILES% | C:\Program Files\Common Files | C:\Program Files\Common Files |
%COMMONPROGRAMFILES(x86)% | C:\Program Files (x86)\Common Files | C:\Program Files (x86)\Common Files |
%COMSPEC% | C:\Windows\System32\cmd.exe | C:\Windows\System32\cmd.exe |
%HOMEDRIVE% | C:\ | C:\ |
%HOMEPATH% | \Documents and Settings\{username} | \Users\{username} |
%PATH% | C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;{plus ścieżki programów} | C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;{plus ścieżki programów} |
%PATHEXT% | .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.WSF;.WSH | .com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc |
%PROGRAMDATA% | brak | C:\ProgramData |
%PROGRAMFILES% | C:\Program Files | C:\Program Files |
%PROGRAMFILES(X86)% | C:\Program Files (x86) (tylko w wersji 64-bitowej) | C:\Program Files (x86) (tylko w wersji 64-bitowej) |
%PROGRAMW6432% | brak | C:\Program Files (tylko w wersji 64-bitowej) |
%PROMPT% | Zazwyczaj $P$G | Zazwyczaj $P$G |
%SYSTEMDRIVE% | C: | C: |
%SystemRoot% | katalog Windows, zazwyczaj C:\Windows, dawniej C:\WINNT | C:\Windows |
%TEMP% i %TMP% | C:\Documents and Settings\{username}\Local Settings\Temp | C:\Users\{username}\AppData\Local\Temp |
%USERNAME% | {username} | {username} |
%USERPROFILE% | C:\Documents and Settings\{username} | C:\Users\{username} |
%WINDIR% | C:\Windows | C:\Windows |
%PUBLIC% | brak | C:\Users\Public |
Systemy rodziny Unix
Zmienne
Część zmiennych środowiskowych jest ustawiana przy starcie powłoki i nie można ich zmienić, np. USER (nazwa użytkownika), SHELL (używana powłoka).
Część zmiennych środowiskowych można dowolnie ustawiać, ale są one niezbędne do prawidłowej pracy, np. PATH (zawiera listę kartotek, w których są poszukiwane programy).
Pewna liczba zmiennych środowiskowych nie ma sformalizowanego znaczenia, ale tradycyjnie przyjęło się ich używać, np. EDITOR (wskazuje program używany jako domyślny edytor tekstu). Niektóre programy mają opisane jakie dodatkowe zmienne środowiskowe wpływają na ich działanie.
Poza tym użytkownik może definiować w sposób zupełnie dowolny swoje zmienne i używać ich w dowolnym celu.
Operacje na zmiennych
Wartość zmiennej o nazwie VAR można sprawdzić poleceniem (odwołanie do wartości następuje przez znak $ przed nazwą zmiennej):
echo $VAR
Sposób ustawiania zmiennej jest zależny od rodzaju powłoki. Dla typowych powłok ustawienie zmiennej VAR, aby zawierała wartość wykonuje się w następujący sposób:
- sh
VAR=wartość
export VAR
W tym wypadku polecenie export nie jest niezbędne, decyduje ono czy powłoka potomna będzie miała ustawioną zmienną czy też zmienna pozostanie lokalna dla aktualnej powłoki.
- tcsh
setenv VAR wartość
- bash
export VAR=wartość
Usuwanie zmiennej środowiskowej wykonuje się poleceniem:
- sh, bash
unset VAR
- tcsh
unsetenv VAR
Zmienna środowiskowa może występować jednocześnie jako wartość lewo- i prawostronna:
export PATH=$HOME/bin:$PATH:/usr/sbin