Шпаргалка: различать переменную shell и окружение программы
Проверьте значение и факт установки переменной, передайте параметр дочерней программе и не раскрывайте всё окружение при диагностике.
Когда открыть эту шпаргалку
Переменная внутри Bash и запись окружения дочернего процесса — разные уровни. Экспорт влияет на дальнейший запуск дочерних программ, но не изменяет окружение уже работающего процесса. Отсутствующее и пустое значение также могут иметь разный смысл.
Выбор команды
Имя DEMO_MODE выбрано для учебной настройки. Для реальной диагностики проверяйте только нужную переменную: окружение может содержать чувствительные значения.
| Что выяснить | Команда или выражение | Как читать результат |
|---|---|---|
| Напечатать безопасно при unset | printf '%s\n' "${DEMO_MODE-}" | Пустой результат ещё не различает unset и пустую строку. |
| Проверить наличие | [[ -v DEMO_MODE ]] | Bash возвращает статус, без вывода значения. |
| Присвоить только в shell | DEMO_MODE=read | Наследование зависит от атрибута export. |
| Передать одной программе | DEMO_MODE=read command-name | Временное назначение для запуска, без изменения родителя. |
| Резерв при unset или empty | ${DEMO_MODE:-read} | Двоеточие включает проверку пустого значения. |
Короткая последовательность
Переменная задаётся только для дочернего Bash. Одинарные кавычки позволяют раскрыть её дочерней оболочке, а не заранее в родителе.
DEMO_MODE=read bash -c 'printf "child=%s\n" "$DEMO_MODE"'Проверка вывода
Дочерняя программа печатает child=read. Значение родительской переменной этим запуском не устанавливается. Если нужно отличить отсутствие от пустоты, используйте проверку наличия, а не только визуальное сравнение напечатанной строки.
Границы применения
Не выводите env целиком в публичный журнал или переписку. Переменная окружения не является защищённым хранилищем секрета. Сложные настройки процесса также могут поступать из файлов, аргументов и менеджера служб; одна переменная не объясняет всё поведение.
Технические источники
Использованы для проверки поведения. Объяснения и учебные сценарии созданы для проекта.
- Руководство bash(1)
- Руководство environ(7)
Проверка текста: 2026-09-11. Нативное исполнение на всей матрице дистрибутивов ещё не подтверждено.
Примеры для собственной Linux-системы с Bash и указанными утилитами. Наличие пакетов и набор опций проверьте в установленной версии; браузерный терминал поддерживает только своё подмножество.
От материала к практике
Выберите следующую тему в каталоге Linux или проверьте знакомые команды в учебном терминале.