如何创建 .env 多行变量

如何创建 .env 多行变量

标题可能有点令人困惑,所以需要稍微解释一下。我需要通过使用环境变量传递 PKCS1 PEM 编码密钥来配置应用程序。该应用程序使用文件进行.env配置

在本地我只是export MY_ENV_VAR=$(cat my_key.pem),但在服务器上,它需要位于.env文件内部并且需要包含值,而不是命令。

我试过了

echo MY_ENV_VAR=`awk 'NF {sub(/\n/, ""); printf "%s\\n",$0;}' my_key.pem` >> .env

但是我尝试设置的应用程序不接受生成的字符串,它抱怨该密钥不符合 PKCS1/8 标准。

现在,我已经将其添加export MY_ENV_VAR=$(cat my_key.pem)到我的.profile并手动启动它,但我更愿意将配置保留在中.env

我该怎么做?我目前正在运行,GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)但如果需要的话,我可以切换到其他 shell。

答案1

你可以做这样的事情:

MY_ENV_VAR=$(cat <<EOF
line 1
line 2
line 3
EOF
)

请注意“EOF”需要单独占一行,其后或之前都不能有任何内容,因此您需要在下一行关闭括号。

您可以用其他词替换“EOF”,即“结束引号”。

这样,您的源/环境文件就不依赖于文件系统内容并且是自包含的。

相关内容