Odpowiedzi:
Oto fragment strony podręcznika użytkownika Bash:
eksport [-fn] [nazwa [= słowo]] ...
eksport -p
Podane nazwy są oznaczone do automatycznego eksportu do środowiska później wykonywanych poleceń. Jeśli podano opcję -f, nazwy odnoszą się do funkcji ...
Jeśli potrzebujesz tylko zmiennej w bieżącym środowisku, nie musisz używać eksportu.
var=value
Edytować:
Bez eksportu: tylko bieżące środowisko. Z eksportem: obecne środowisko i środowiska potomne.
Oto demonstracja wpływu eksportu na dostępność zmiennej w środowisku potomnym i że zmiany w środowisku potomnym nie wpływają na element nadrzędny:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
Po pierwszym echo ( echo "parent...") można zobaczyć „123” i „456”, ponieważ oba var1i var2są aktywne w obecnym otoczeniu. Nie widzisz wartości, var3ponieważ nie została jeszcze ustawiona.
Po wierszu rozpoczynającym się „ var3=...” nie widzisz wartości, var1ponieważ nie została ona wyeksportowana. Ci zrobić zobaczyć wartość var2, ponieważ była eksportowana. Widać wartość var3, ponieważ został ustawiony dla środowiska dziecka tylko .
( bash -cjest równoważne uruchomieniu skryptu z zawartością argumentu do -copcji. Skrypt lub inny plik wykonywalny lub, w tym przypadku, argument do bash -cstaje się dzieckiem bieżącego środowiska, które w rezultacie jest oczywiście dzieckiem rodzic.)
W „skrypcie” wartości zmiennej są zmieniane. Teraz wyświetla te nowe wartości.
Po zakończeniu „skryptu” wykonywanie powraca do środowiska nadrzędnego (w tym przypadku wiersza polecenia). Po ostatnim echu zobaczysz oryginalne wartości, ponieważ zmiany wprowadzone w środowisku potomnym nie wpływają na element nadrzędny.
export- udostępnienia zmiennych w tych środowiskach potomnych.
Mówisz tak
Zawsze używam polecenia eksportu do ustawienia zmiennej środowiskowej
Sposób, w jaki to sformułowałeś, brzmi tak, jakbyś naprawdę próbował zapytać, w jaki sposób utrzymujesz zmienną środowiskową. Aby to zrobić, musisz umieścić swoją export VAR="foo"instrukcję w pliku $ HOME / .bash_profile (jeśli używasz bash). Jeśli chcesz, aby ta zmienna środowiskowa zachowała się dla wszystkich użytkowników oprócz root, dodaj ją do / etc / profile. Jeśli chcesz go dodać także dla użytkownika root, ustaw go w /root/.bash_profile.
Będzie to działać dla wszystkich powłok logowania, w których powłoką jest bash. W przypadku powłok, które nie są zalogowane, musisz użyć .bashrc. Nie mam wglądu w inne pociski: D
eksport jest najprostszym sposobem na zrobienie tego, więc dlaczego nie zostawić tego w tym miejscu?
export VARIABLE=value # for Bourne, bash, and similar shells
setenv VARIABLE value # for csh and similar shells
FOO=BAR; executethisprogram program executethisprogramNIE BĘDZIE znać wartości zmiennej FOO. Z drugiej strony, przy użyciu: FOO=BAR; export FOO; executethisprogram Program executethisprogrampozna wartość zmiennej FOO.
export FOOto polecenie, które zaznacza zmienną, FOOaby była dostępna dla procesów potomnych środowiska, w którym polecenie zostało wydane. Ten rodzic może być skryptem lub interaktywną powłoką.
Możesz także zrobić coś takiego:
VAR=val application
Na przykład:
LANG=C ls --help
wyjście w języku angielskim.
LANG=pl_PL ls --help
wyjście w języku polskim (jeśli jest dostępne).
W przeszłości nie można było eksportować VAL = val. Musiałeś
VAL=val; export VAL
lsna przykład) bez wpływu na wartość tej zmiennej w bieżącym (macierzystym) środowisku.
lsjest potomkiem procesu, z którego został uruchomiony. Jeśli piszę lsw wierszu polecenia, powłoka interaktywna jest rodzicem i lsdzieckiem. Jeśli mam skrypt, który używa, lsskrypt jest rodzicem i lsdzieckiem.