Экранирование пароля для .env
Запишите пароль в строку .env, которую shell, Node.js dotenv, python-dotenv и docker --env-file прочитают точно, включая кавычки и знак $.
Каждая строка заключается в кавычки так, чтобы парсер прочитал ровно ваш пароль: shell использует одинарные кавычки, записывая кавычку как '\'', dotenv в Node выбирает одинарные, двойные или обратные кавычки, python-dotenv экранирует \ и \' внутри одинарных кавычек, а docker --env-file берёт остаток строки буквально (без кавычек).
Работает полностью в вашем браузере. Ваши данные никуда не загружаются.
Что такое Экранирование пароля для .env?
Пароли с кавычками, знаками доллара, # или обратной косой чертой часто ломают файлы .env или изменяются при подстановке переменных. Инструмент пишет строки KEY=value, которые каждый парсер прочитает как в точности ваш пароль, и предупреждает, если парсер не может представить значение.
Как пользоваться Экранирование пароля для .env
- Введите Имя переменной, например DB_PASSWORD.
- Введите пароль в поле Пароль.
- Скопируйте строку для нужной цели: shell/POSIX, Node.js dotenv, python-dotenv или docker run --env-file.
- Вставьте её в файл .env.
Пример
Variable DB_PASSWORD, password p@ss'w"rd$1
Shell: DB_PASSWORD='p@ss'\''w"rd$1' Node dotenv: DB_PASSWORD=`p@ss'w"rd$1` python-dotenv: DB_PASSWORD='p@ss\'w"rd$1' docker --env-file: DB_PASSWORD=p@ss'w"rd$1
Когда использовать Экранирование пароля для .env
Используйте всякий раз, когда секрет содержит не только буквы и цифры. Если секрет создаёте вы, длинное буквенно-цифровое значение полностью устраняет проблемы экранирования.
Как работает Экранирование пароля для .env
Shell: значение оборачивается в одинарные кавычки, а каждый ' становится '\'' (внутри одинарных кавычек подстановок нет). Node dotenv (v15+): одинарные кавычки буквальны; если значение содержит ', используются двойные кавычки (интерпретируются только \n и \r), иначе обратные апострофы; значения, оканчивающиеся обратной косой чертой или содержащие все три типа кавычек, представить нельзя. python-dotenv: одинарные кавычки, \ и ' экранируются как \\ и \'. docker --env-file: кавычек нет вовсе; остаток строки это значение, поэтому переводы строк невозможны.
Распространенные Случаи Использования
- Добавление пароля БД со знаком $ и кавычками в файл .env
- Подготовка секретов для docker run --env-file
- Исправление значений dotenv, обрезанных на #
- Написание инструкций export для shell-скриптов
Часто Задаваемые Вопросы
Почему просто не использовать двойные кавычки?
Внутри двойных кавычек shell и некоторые загрузчики dotenv подставляют $VAR и интерпретируют обратные косые черты, что молча меняет пароль.
Почему строка docker --env-file без кавычек?
docker run --env-file не обрабатывает кавычки; они стали бы частью значения.
Использует ли Docker Compose те же правила?
Парсер .env в Docker Compose имеет собственные правила интерполяции, которые инструмент не моделирует; смотрите документацию Compose или используйте там $$ для буквального знака доллара.