Команда экспорта 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

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


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


0

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

export EDITOR=pico

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.