Экспорт переменной
Часть раздела Основы путешествия по Terminal на Coddy — урок 63 из 82.
Когда вы устанавливаете переменную, такую как MY_NAME="Alice", она существует только в вашей текущей оболочке. Если вы запустите скрипт или другую программу, эта переменная не будет доступна для неё. Вот здесь и вступает в игру export.
Команда export делает переменную доступной для любых дочерних процессов, то есть программы или скрипты, запущенные из вашей текущей оболочки, могут получить к ней доступ:
export MY_NAME="Alice"Вы также можете экспортировать существующую переменную:
MY_NAME="Alice"
export MY_NAMEОба подхода дают одинаковый результат. Переменная становится частью окружения, которое передается любой команде, которую вы запускаете после этого.
Чтобы увидеть разницу, рассмотрите запуск скрипта, который пытается использовать $MY_NAME.
Без экспорта скрипт ничего не видит. С экспортом скрипт может получить доступ к значению.
Вот почему системные переменные, такие как PATH и HOME, экспортируются по умолчанию. Они должны быть доступны каждой программе, которую вы запускаете.
Вы можете проверить, что переменная экспортирована, проверив, появляется ли она в выводе env:
env | grep MY_NAMEЭкспортированные переменные всё равно исчезают при закрытии терминала. Следующий урок объясняет, как сделать переменные постоянными между сессиями.
Задание
ЛегкоЭкспортируйте переменную с именем PROJECT со значением terminal-course, затем проверьте, что она экспортирована, отфильтровав вывод env, чтобы показать только вашу новую переменную.
Вы можете сделать это в одной строке, используя export для установки и экспорта переменной одновременно, затем пропустив env через grep, чтобы найти её.
Ваш вывод должен быть:
PROJECT=terminal-courseПодсказка: Сначала выполните
export PROJECT="terminal-course", затем используйтеenv | grep PROJECT, чтобы проверить, что она появляется в окружении.
Шпаргалка
Команда export делает переменную доступной для дочерних процессов (программ или скриптов, запущенных из текущей оболочки):
export MY_NAME="Alice"Вы также можете экспортировать существующую переменную:
MY_NAME="Alice"
export MY_NAMEБез export переменные существуют только в текущей оболочке и недоступны для скриптов или программ, которые вы запускаете.
Чтобы проверить, экспортирована ли переменная, посмотрите, появляется ли она в выводе env:
env | grep MY_NAMEЭкспортированные переменные исчезают при закрытии терминала.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Каталоги
Создать каталогСкопировать каталогПереместить и переименовать каталогУдалить каталогИтог - Операции с каталогами7Содержимое файлов
Head и TailПодсчёт словКоманда sortКоманда uniqОсновы grepGrep с флагамиПовторение - Текстовый детектив10Проект анализатора логов
Обзор проектаПросмотр файла лога2Навигация
Вывод текущей рабочей директорииСписок файловСмена директорииАбсолютные и относительные путиДомашняя и корневая директорииИтог - Найди свой путь8Перенаправление
Стандартный выводПерезапись в файлДописывание в файлСтандартный вводСтандартная ошибкаПовторение - Сборщик логов11Права доступа
Понимание прав доступаЧтение прав доступаChmod с числамиChmod с символамиВладение файламиПовторение - Заблокируйте доступ14Проект скрипта резервного копирования
Обзор проектаПолучение пути к источнику3Файлы
Создать файлПрочитать файлСкопировать файлПереместить и переименовать файлУдалить файлПовторение - Операции с файлами6Символы подстановки и шаблоны
Звёздный символ подстановкиВопросительный символ подстановкиСкобочные символы подстановкиКомбинирование символов подстановкиПовторение - выборочные операции9Каналы
Что такое каналЦепочка двух командЦепочка нескольких командКанал с grepИтог - Конвейер данных