Команда экспорта UNIX [закрыто]

158

Я пытаюсь понять использование exportкоманды.

Я пытался использовать man export, но нет руководства для этой команды.

Может ли кто-нибудь помочь мне разобраться в использовании exportв UNIX?

Джейк
источник
это очень странно, что для этого нет справочной страницы. Я тоже его не вижу.
Буратино

Ответы:

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.

Джон Кугельман
источник
16

Юникс

Команды env, set и printenv отображают все переменные окружения и их значения. env и set также используются для установки переменных среды и часто включаются непосредственно в оболочку. Кроме того, printenv можно использовать для печати одной переменной, указав ее имя в качестве единственного аргумента команды.

В Unix также могут использоваться следующие команды, но они часто зависят от определенной оболочки.

export VARIABLE=value  # for Bourne, bash, and related shells
setenv VARIABLE value  # for csh and related shells

Вы можете посмотреть на это на

user931841
источник
4
Добро пожаловать в StackOverflow. Обратите внимание, что классическая оболочка Bourne потребует: VARIABLE=value; export VARIABLEвместо назначения и экспорта сразу. Команда setв C Shell предназначена для переменных оболочки, а не переменных среды; setenvявляется аналогом export. Команда setв оболочках, полученных из Bourne, печатает все переменные, а не только экспортируемые переменные (окружения). Исторически, по крайней мере, envкоманда отделена от оболочки (не является встроенной), хотя ее можно легко превратить во встроенную. Он устанавливает среду для конкретной команды, а не оболочку, которая ее запускает.
Джонатан Леффлер
0

exportиспользуется для установки переменных среды. Например:

export EDITOR=pico

Будет установлен ваш текстовый редактор по умолчанию в качестве picoкоманды.

Икар
источник