Відповіді:
Це уривок зі сторінки чоловіка Баша:
export [-fn] [name [= word]] ...
export -p
Надані імена позначені для автоматичного експорту в середовище згодом виконаних команд. Якщо параметр -f заданий, імена відносяться до функцій ...
Якщо вам потрібна лише змінна в поточному середовищі, не потрібно використовувати експорт.
var=value
Редагувати:
Без експорту: лише поточне середовище. З експортом: поточне середовище та дошкільне середовище.
Ось демонстрація впливу експорту на наявність змінної у дочірньому середовищі та те, що зміни у дочірньому середовищі не впливають на батьків:
$ 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] []
Після першого відлуння - сигналу ( echo "parent...") ви бачите «123» і «456» , тому що , як var1і var2активні в поточній середовищі. Ви не бачите значення, var3оскільки воно ще не встановлено.
Після рядка, який починається, " var3=..." ви не бачите значення, var1оскільки воно не було експортовано. Ви робите бачите значення , var2оскільки вона була експортована. Ви бачите значення , var3тому що він був встановлений для дитини середовища тільки .
( bash -cеквівалентно запуску скрипта зі змістом аргументу до -cпараметра. Сценарій або інший виконуваний файл або, в цьому випадку, аргумент, щоб bash -cстати дочіркою поточного середовища, в результаті чого, звичайно, є дитина батьків.)
У "скрипті" значення змінної змінюються. Тепер він виводить ці нові значення.
Після закінчення "скрипту" виконання повертається до батьківського середовища (командний рядок у цьому випадку). Після останнього відлуння ви бачите початкові значення, оскільки зміни, внесені в дочірнє середовище, не впливають на батьків.
export- зробити змінні доступними для цих дочірніх середовищ.
Ти це кажеш
Я завжди використовую команду експорту для встановлення змінної середовища
До того, як ви це зробили, це здається, що ви насправді намагаєтеся запитати, як зробити, щоб екологічна змінна зберігалася. Для цього потрібно буде розмістити export VAR="foo"заяву у вашому файлі $ HOME / .bash_profile (якщо ви використовуєте bash). Якщо ви хочете, щоб змінна середовище зберігалася для всіх користувачів, окрім root, додайте її до / etc / profile. Якщо ви хочете, щоб його додали і для кореневого користувача, встановіть його в /root/.bash_profile.
Це буде працювати для всіх оболонок входу, де bash - це оболонка вибору. Для оболонок без входу потрібно використовувати .bashrc. Я не маю жодної ідеї для інших снарядів: D
експорт - це найпростіший спосіб зробити це, то чому б не залишити його при цьому?
export VARIABLE=value # for Bourne, bash, and similar shells
setenv VARIABLE value # for csh and similar shells
FOO=BAR; executethisprogram Програма executethisprogramНЕ буде знати значення змінної FOO. З іншого боку, при використанні: FOO=BAR; export FOO; executethisprogram Програма executethisprogramдізнається значення змінної FOO.
export FOOце команда, що позначає змінну, FOOщоб вона могла отримати доступ до дочірніх процесів оточення, в якій команда була видана. Цей батько може бути сценарієм або інтерактивною оболонкою.
Ви також можете зробити щось подібне:
VAR=val application
Наприклад:
LANG=C ls --help
вихід англійською мовою.
LANG=pl_PL ls --help
вихід польською мовою (за наявності).
Раніше в sh ви не могли здійснити експорт VAL = val. Вам довелося
VAL=val; export VAL
lsнаприклад), не впливаючи на значення цієї змінної у поточному (батьківському) середовищі.
lsє дитиною процесу, з якого він був запущений. Якщо я набираю lsв командному рядку, інтерактивна оболонка є батьківською і lsє дочірньою. Якщо у мене є сценарій, який використовує, lsто сценарій є батьківським і lsє дочірньою.