Odpowiedzi:
Kiedy wykonujesz program, program potomny dziedziczy swoje zmienne środowiskowe od rodzica. Na przykład, jeśli $HOME
jest ustawiony na /root
w rodzicu, to $HOME
zmienna dziecka również jest ustawiona na /root
.
Dotyczy to tylko zmiennych środowiskowych, które są oznaczone do eksportu. Jeśli ustawisz zmienną w wierszu poleceń, na przykład
$ FOO="bar"
Ta zmienna nie będzie widoczna w procesach potomnych. Nie, chyba że go wyeksportujesz:
$ export FOO
Możesz połączyć te dwa stwierdzenia w jedno w bash (ale nie w oldschoolowym sh):
$ export FOO="bar"
Oto krótki przykład pokazujący różnicę między wyeksportowanymi i nieeksportowanymi zmiennymi. Aby zrozumieć, co się dzieje, wiedz, że sh -c
tworzy się proces powłoki potomnej, który dziedziczy środowisko powłoki nadrzędnej.
$ FOO=bar
$ sh -c 'echo $FOO'
$ export FOO
$ sh -c 'echo $FOO'
bar
Uwaga: Aby uzyskać pomoc dotyczącą wbudowanych poleceń powłoki, użyj help export
. Elementy wbudowane powłoki to polecenia, które są częścią powłoki, a nie niezależne pliki wykonywalne, takie jak /bin/ls
.
Unix
Polecenia env, set i printenv wyświetlają wszystkie zmienne środowiskowe i ich wartości. env i set są również używane do ustawiania zmiennych środowiskowych i często są włączane bezpośrednio do powłoki. printenv może być również użyty do wydrukowania pojedynczej zmiennej, podając jej nazwę jako jedyny argument polecenia.
W systemie Unix można również używać następujących poleceń, ale często są one zależne od określonej powłoki.
export VARIABLE=value # for Bourne, bash, and related shells
setenv VARIABLE value # for csh and related shells
Można spojrzeć na to co
VARIABLE=value; export VARIABLE
zamiast przypisywać i eksportować jednocześnie. set
Polecenie powłoka C dla zmiennych powłoki zamiast zmienne środowiska; setenv
jest odpowiednikiem export
. set
Polecenie powłoki Bourne'a pochodzących drukuje wszystkie zmienne, a nie tylko eksportowane (środowisko) zmiennych. Przynajmniej z historycznego punktu env
widzenia polecenie jest oddzielone od powłoki (nie jest wbudowane), chociaż można je łatwo przekształcić w wbudowaną. Ustawia środowisko dla konkretnego polecenia, a nie powłokę, która je uruchamia.
export
to polecenie wbudowane w bash
powłokę i inne warianty powłoki Bourne'a . Służy do zaznaczania zmiennej powłoki do eksportu do procesów potomnych.