это очень странно, что для этого нет справочной страницы. Я тоже его не вижу.
Буратино
Ответы:
226
Когда вы выполняете программу, дочерняя программа наследует свои переменные окружения от родителя. Например, если в родительском элементе $HOMEзадано /rootзначение, то для дочерней $HOMEпеременной также устанавливается значение /root.
Это относится только к переменной среды, помеченной для экспорта. Если вы установите переменную в командной строке, как
$ FOO="bar"
Эта переменная не будет видна в дочерних процессах. Нет, если вы не экспортируете его:
$ export FOO
Вы можете объединить эти два утверждения в одно в bash (но не в старой школе):
$ export FOO="bar"
Вот быстрый пример, показывающий разницу между экспортированными и неэкспортированными переменными. Чтобы понять, что происходит, нужно знать, что sh -cсоздает дочерний процесс оболочки, который наследует среду родительской оболочки.
$ FOO=bar
$ sh -c 'echo $FOO'
$ export FOO
$ sh -c 'echo $FOO'
bar
Примечание. Для получения справки по встроенным командам оболочки используйте help export. Встроенные модули оболочки - это команды, которые являются частью вашей оболочки, а не независимыми исполняемыми файлами, такими как /bin/ls.
Команды env, set и printenv отображают все переменные окружения и их значения. env и set также используются для установки переменных среды и часто включаются непосредственно в оболочку. Кроме того, printenv можно использовать для печати одной переменной, указав ее имя в качестве единственного аргумента команды.
В Unix также могут использоваться следующие команды, но они часто зависят от определенной оболочки.
export VARIABLE=value # for Bourne, bash, and related shells
setenv VARIABLE value # for csh and related shells
Добро пожаловать в StackOverflow. Обратите внимание, что классическая оболочка Bourne потребует: VARIABLE=value; export VARIABLEвместо назначения и экспорта сразу. Команда setв C Shell предназначена для переменных оболочки, а не переменных среды; setenvявляется аналогом export. Команда setв оболочках, полученных из Bourne, печатает все переменные, а не только экспортируемые переменные (окружения). Исторически, по крайней мере, envкоманда отделена от оболочки (не является встроенной), хотя ее можно легко превратить во встроенную. Он устанавливает среду для конкретной команды, а не оболочку, которая ее запускает.
Джонатан Леффлер
4
exportявляется встроенной командой bashоболочки и других вариантов оболочки Bourne . Он используется для маркировки переменной оболочки для экспорта в дочерние процессы.
Ответы:
Когда вы выполняете программу, дочерняя программа наследует свои переменные окружения от родителя. Например, если в родительском элементе
$HOME
задано/root
значение, то для дочерней$HOME
переменной также устанавливается значение/root
.Это относится только к переменной среды, помеченной для экспорта. Если вы установите переменную в командной строке, как
Эта переменная не будет видна в дочерних процессах. Нет, если вы не экспортируете его:
Вы можете объединить эти два утверждения в одно в bash (но не в старой школе):
Вот быстрый пример, показывающий разницу между экспортированными и неэкспортированными переменными. Чтобы понять, что происходит, нужно знать, что
sh -c
создает дочерний процесс оболочки, который наследует среду родительской оболочки.Примечание. Для получения справки по встроенным командам оболочки используйте
help export
. Встроенные модули оболочки - это команды, которые являются частью вашей оболочки, а не независимыми исполняемыми файлами, такими как/bin/ls
.источник
Юникс
Команды env, set и printenv отображают все переменные окружения и их значения. env и set также используются для установки переменных среды и часто включаются непосредственно в оболочку. Кроме того, printenv можно использовать для печати одной переменной, указав ее имя в качестве единственного аргумента команды.
В Unix также могут использоваться следующие команды, но они часто зависят от определенной оболочки.
Вы можете посмотреть на это на
источник
VARIABLE=value; export VARIABLE
вместо назначения и экспорта сразу. Командаset
в C Shell предназначена для переменных оболочки, а не переменных среды;setenv
является аналогомexport
. Командаset
в оболочках, полученных из Bourne, печатает все переменные, а не только экспортируемые переменные (окружения). Исторически, по крайней мере,env
команда отделена от оболочки (не является встроенной), хотя ее можно легко превратить во встроенную. Он устанавливает среду для конкретной команды, а не оболочку, которая ее запускает.export
является встроенной командойbash
оболочки и других вариантов оболочки Bourne . Он используется для маркировки переменной оболочки для экспорта в дочерние процессы.источник
export
используется для установки переменных среды. Например:Будет установлен ваш текстовый редактор по умолчанию в качестве
pico
команды.источник