.env 密码转义器

把密码写成 shell、Node.js dotenv、python-dotenv 或 docker --env-file 都能原样读回的 .env 行,包括引号和 $。

每行都经过正确的引号处理,解析器读回的正好是你的密码:shell 使用单引号,单引号本身写成 '\'';Node dotenv 会选用单引号、双引号或反引号;python-dotenv 在单引号中转义 \ 和 \';docker --env-file 则把行的剩余部分原样作为值(不加引号)。

完全在浏览器中运行,您的数据不会被上传。

什么是 .env 密码转义器?

带有引号、美元符号、# 或反斜杠的密码经常会破坏 .env 文件,或被变量展开改变。此工具会写出各个解析器都能原样读回你密码的 KEY=value 行,并在某个解析器无法表示该值时发出警告。

如何使用 .env 密码转义器

  1. 输入变量名,例如 DB_PASSWORD。
  2. 在密码栏中输入密码。
  3. 复制适用于目标的那一行:shell/POSIX、Node.js dotenv、python-dotenv 或 docker run --env-file。
  4. 把它粘贴到你的 .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 值
  • 为 shell 脚本编写 export 语句

常见问题

为什么不直接用双引号?

在双引号内,shell 和一些 dotenv 加载器会展开 $VAR 并解释反斜杠,这会悄悄改变密码。

为什么 docker --env-file 的那一行没有加引号?

docker run --env-file 不处理引号;引号会成为值的一部分。

Docker Compose 使用相同的规则吗?

Docker Compose 的 .env 解析器有自己的插值规则,此工具没有对其建模;请查看 Compose 文档,或在那里用 $$ 表示字面的美元符号。

探索更多分类