Ответ
В контексте оболочки (например, bash) export и простое присваивание (VAR=value) — это разные механизмы управления областью видимости переменных.
Ключевое отличие:
- Локальная переменная (присваивание): Создается только для текущей сессии оболочки. Она не передается дочерним процессам (например, другим скриптам или командам, запущенным из этой оболочки).
- Экспортированная переменная (
export): Также доступна в текущей сессии, но копируется в окружение всех дочерних процессов, делая ее для них видимой.
Пример:
# Локальная переменная. Не видна в дочерних процессах.
MY_LOCAL_VAR="local_value"
# Экспортированная переменная. Видна в дочерних процессах.
export MY_GLOBAL_VAR="global_value"
# Проверка:
bash -c 'echo Локальная: $MY_LOCAL_VAR' # Вывод: Локальная:
bash -c 'echo Глобальная: $MY_GLOBAL_VAR' # Вывод: Глобальная: global_value
Практическое применение в DevOps:
exportиспользуется для передачи конфигурационных параметров (например, путей, токенов, адресов серверов) в скрипты сборки, инструменты оркестрации (Ansible, Terraform) или другие процессы в конвейере CI/CD.- Для постоянного хранения таких переменных используются файлы окружения (
.env) или секреты в системах вроде HashiCorp Vault, Kubernetes Secrets.