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.
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
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,
4
exportto polecenie wbudowane w bashpowłokę i inne warianty powłoki Bourne'a . Służy do zaznaczania zmiennej powłoki do eksportu do procesów potomnych.
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
Ta zmienna nie będzie widoczna w procesach potomnych. Nie, chyba że go wyeksportujesz:
Możesz połączyć te dwa stwierdzenia w jedno w bash (ale nie w oldschoolowym sh):
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.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
.źródło
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.
Można spojrzeć na to co
źródło
VARIABLE=value; export VARIABLE
zamiast przypisywać i eksportować jednocześnie.set
Polecenie powłoka C dla zmiennych powłoki zamiast zmienne środowiska;setenv
jest odpowiednikiemexport
.set
Polecenie powłoki Bourne'a pochodzących drukuje wszystkie zmienne, a nie tylko eksportowane (środowisko) zmiennych. Przynajmniej z historycznego punktuenv
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 wbash
powłokę i inne warianty powłoki Bourne'a . Służy do zaznaczania zmiennej powłoki do eksportu do procesów potomnych.źródło
export
służy do ustawiania zmiennych środowiskowych. Na przykład:Ustawi domyślny edytor tekstu jako
pico
polecenie.źródło