Zmienna środowiskowa

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Ujednoznacznienie Ten artykuł dotyczy informatyki. Zobacz też: zmienna sytuacyjna w psychologii.

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[edytuj | edytuj kod]

Zakres zmiennych w Windows[edytuj | edytuj kod]

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[edytuj | edytuj kod]

Zmiany trwałe są możliwe przez modyfikację rejestrów, ale także przez Właściwości systemu → Zaawansowane → Zmienne środowiskowe (Właściwości systemu są uruchamiane np. przez wciśnięcie klawiszy Windows i Pause; w systemie Windows 7 analogiczne okienko jest uruchamianie dopiero po wejściu w „Zaawansowane ustawienia systemu”).

Z linii poleceń można także zmieniać zmienne środowiskowe, ale tylko dla programów uruchamianych w ramach tej 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 także wyświetlić wszystkie zmienne (bez podania parametrów) lub rozpoczynające się od wpisanych znaków (np. „set Pa” wyświetli wszystkie zmienne na „PA”).

Zmienne ustawia się wpisując polecenie set 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[edytuj | edytuj kod]

Uwaga: {username} oznacza nazwę użytkownika

Variable Windows XP Windows Vista/7
 %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
 %PROGRAMFILES% C:\Program Files (w wersji 32-bitowej) C:\Program Files (w wersji 32-bitowej)
 %PROGRAMFILES% C:\Program Files (x86) (wersji 64-bitowej) C:\Program Files (x86) (wersji 64-bitowej)
 %PROGRAMW6432% C:\Program Files (tylko w wersji 64-bitowej) C:\Program Files (tylko w wersji 64-bitowej)
 %PROGRAMFILES(X86)% C:\Program Files (x86) (tylko w wersji 64-bitowej) C:\Program Files (x86) (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% C:\Users\Public

Systemy rodziny Unix[edytuj | edytuj kod]

Zmienne[edytuj | edytuj kod]

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[edytuj | edytuj kod]

Wartość zmiennej o nazwie VAR można sprawdzić poleceniem:

echo $VAR

odwołanie do wartości następuje przez znak $ przed nazwą zmiennej.

Sposób ustawiania zmiennej jest zależny od rodzaju powłoki, i dla typowych powłok ustawienie zmiennej VAR aby zawierała wartosc:

sh
VAR=wartosc 
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 wartosc
bash
export VAR=wartosc

Usuwamy zmienną 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