Команда експорту UNIX [закрита]


158

Я намагаюся зрозуміти використання exportкоманди.

Я спробував використовувати man export, але керівництва для цієї команди немає.

Чи може хто-небудь допомогти мені зрозуміти використання exportUNIX?


надзвичайно дивно, що для нього не існує чоловічої сторінки. Я його теж не бачу.
Буратіно

Відповіді:


226

Під час виконання програми дочірня програма успадковує змінні середовища від батьківського. Наприклад, якщо в батьківському вікні $HOMEвстановлено значення, /rootтоді $HOMEтакож встановлена ​​змінна дитина /root.

Це стосується лише змінної середовища, позначеної для експорту. Якщо ви встановите змінну в командному рядку типу

$ FOO="bar"

Ця змінна не буде видно у дочірніх процесах. Якщо ви не експортуєте його:

$ export FOO

Ви можете об'єднати ці два твердження в одне в bash (але не в old-school sh):

$ export FOO="bar"

Ось короткий приклад, що показує різницю між експортованими та неекспортованими змінними. Щоб зрозуміти, що відбувається, знайте, що sh -cстворюється процес дочірньої оболонки, який успадковує середовище батьківської оболонки.

$ FOO=bar
$ sh -c 'echo $FOO'

$ export FOO
$ sh -c 'echo $FOO'
bar

Примітка. Щоб отримати допомогу щодо вбудованих команд оболонки, використовуйте help export. Вбудовані оболонки - це команди, які є частиною вашої оболонки, а не незалежними виконуваними файлами /bin/ls.


16

Unix

Команди 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 для змінних оболонки , а не змінні оточення; setenvє аналогом export. setКоманда в Bourne отриманих з оболонок друкує всі змінні, а не тільки експортовані (середа) змінні. Принаймні історично, envкоманда відокремлена від оболонки (не вбудованої), хоча її можна легко перетворити на вбудований. Він встановлює середовище для конкретної команди, а не оболонку, яка виконує її.
Джонатан Леффлер


0

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

export EDITOR=pico

picoКоманда встановить ваш текстовий редактор за замовчуванням .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.