Zmienne Systemowe

Zmienne systemowe, często nazwane także zmiennymi środowiskowymi (ang.environment variables) - są zdefiniowane i przechowywane w środowisku nadrzędnym (powłoce z której uruchamiane są Twoje skrypty). Ich nazwy są zwyczajowo tworzone z dużych liter i mogą być testowane poleceniem set. Definują środowisko użytkownika, dostępne dla wszystkich procesów potomnych

Zmienne środowiskowe i ich zasięg:

  • globalne - widoczne w każdym podshellu
  • lokalne - widoczne tylko dla tego shella w którym został ustawione

Aby bardziej uzmysłowić sobie różnicę między nimi zróbmy mały eksperyment: otwórz dowolny terminal (widoczny podshell) i wpisz:

x="napis"
echo $x
xterm
x="napis"   zdefiniowałeś właśnie zmienną x, która ma wartość "napis"
echo $x     wyświetli wartość zmiennej x
xterm        wywołanie podshella

wpiszmy jeszcze raz:

echo $x nie pokaże nic, bo zmienne lokalne nie są widoczne w podshellach

Inicjacja zmiennych globalnych:

export x="napis"

Teraz zmienna x będzie widoczna w podshellach, jak widać wyżej służy do tego polecenie export, nadaje ono wskazanym zmiennym atrybut zmiennych globalnych. Jeśli napiszesz samo export, opcjonalnie export -p uzyskasz listę aktualnie eksportowanych zmiennych. Na tej liście przed nazwą każdej zmiennej znajduje się zapis:
declare -x

To wewnętrzne polecenie BASH-a, służące do definiowania zmiennych i nadawania im atrybutów, -x to atrybut eksportu czyli jest to, to samo co polecenie export.
Uwaga! Polecenie declare występuje tylko w BASH-u, nie ma go w innych powłokach, natomiast export występuje w ksh, ash i innych, które korzystają z plików startowych /etc/profile.

Zaleca się stosowanie polecenia export.

export -n zmienna

Spowoduje usunięcie atrybutu eksportu dla danej zmiennej

Niektóre przykłady zmiennych środowiskowych:

$HOME
ścieżka do twojego katalogu domowego
$USER
twój login
$HOSTNAME
nazwa twojego hosta
$OSTYPE
rodzaj systemu operacyjnego
$UID
Unique User ID - unikalny numer użytkownika
$TERM
Typ terminala z jakiego korzystamy

I wiele, wiele innych wszystkie dostępne zmienne srodowiskowe można wyświetlić za pomoca polecenia:

printenv | less

W niektórych systemach nie istnieje polecenie printenv, można skorzystać z env.

Do zmiennych systemowych odwołujemy się identycznie jak do normalnych.

Definiując zmienne jako systemowe, należy upewnić się czy polecenie export udostępnienia zmienne powłokom potomnym (podshellom) :

bash$ SCRIPT_PATH=/usr/bin/skrypt.sh
bash$ export SCRIPT_PATH

Uwaga:

Zauważ brak znaku $ przy korzystaniu z polecenia export!

Nowoczesne powłoki systemowe umożliwiają wykonywanie tego w jednej linii:

bash$ export SCRIPT_PATH=/usr/bin/skrypt.sh
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License