envsubst подставляет значения переменных окружения вместо ${VAR} в текстовом файле:

export DOMAIN=example.com
envsubst < nginx.conf.template > /etc/nginx/conf.d/app.conf

Без аргументов envsubst заменит все переменные из окружения — рискуя задеть случайные $PATH или $HOME в шаблоне. Явный список ограничивает подстановку:

envsubst '${DOMAIN} ${PORT}' < nginx.conf.template > app.conf

Типичное место — Docker-entrypoint, собирающий конфиг из шаблона перед запуском nginx:

envsubst '${BACKEND_HOST} ${PORT}' < default.conf.template > default.conf

Тот же приём работает в CI/CD — один шаблон под разные окружения.

#linux #bash #sysadmin