标题可能有点令人困惑,所以需要稍微解释一下。我需要通过使用环境变量传递 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”,即“结束引号”。
这样,您的源/环境文件就不依赖于文件系统内容并且是自包含的。