Polecenie eksportu UNIX [zamknięte]

158

Próbuję zrozumieć użycie exportpolecenia.

Próbowałem użyć man export, ale nie ma instrukcji dla tego polecenia.

Czy ktoś może mi pomóc w zrozumieniu użycia exportw UNIX?

Jake
źródło
to bardzo dziwne, że nie ma dla niego strony podręcznika. Ja też nie widzę.
Pinokio

Odpowiedzi:

226

Kiedy wykonujesz program, program potomny dziedziczy swoje zmienne środowiskowe od rodzica. Na przykład, jeśli $HOMEjest ustawiony na /rootw rodzicu, to $HOMEzmienna 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 -ctworzy 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.

John Kugelman
źródło
16

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

user931841
źródło
4
Witamy w StackOverflow. Zauważ, że klasyczna powłoka Bourne'a wymagałaby: VARIABLE=value; export VARIABLEzamiast przypisywać i eksportować jednocześnie. setPolecenie powłoka C dla zmiennych powłoki zamiast zmienne środowiska; setenvjest odpowiednikiem export. setPolecenie powłoki Bourne'a pochodzących drukuje wszystkie zmienne, a nie tylko eksportowane (środowisko) zmiennych. Przynajmniej z historycznego punktu envwidzenia 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.
Jonathan Leffler,
0

exportsłuży do ustawiania zmiennych środowiskowych. Na przykład:

export EDITOR=pico

Ustawi domyślny edytor tekstu jako picopolecenie.

Ikar
źródło