如何在Bash/终端中导出多行环境变量例如:RSA私钥 [英] How to Export a Multi-line Environment Variable in Bash/Terminal e.g: RSA Private Key
问题描述
我们的一个应用github-backup
需要使用RSA私钥作为环境变量。
text
export PRIVATE_KEY=-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA04up8hoqzS1+
...
l48DlnUtMdMrWvBlRFPzU+hU9wDhb3F0CATQdvYo2mhzyUs8B1ZSQz2Vy==
-----END RSA PRIVATE KEY-----
不起作用...因为换行符。
我搜索了一下,但没有找到可行的解决方案...
例如:How to set multiline RSA private key environment variable for AWS Elastic Beans
错误:
-----END RSA PRIVATE KEY-----': not a valid identifier
按照中的说明操作: http://blog.vawter.com/2016/02/10/Create-an-Environment-Variable-from-a-Private-Key
创建了名为keytoenvar.sh
的文件,其中包含以下行:
#!/usr/bin/env bash
file=$2
name=$1
export $name="$(awk 'BEGIN{}{out=out$0"
"}END{print out}' $file| sed 's/
$//')"
然后运行以下命令:
source keytoenvar.sh PRIVATE_KEY ./gitbu.2018-03-23.private-key.pem
有效但它看起来像是一种"冗长的"方法...🤔
有没有人知道更简单的方法?
(我希望有一个"初学者友好的"解决方案,没有太多的"步骤"...)
推荐答案
导出密钥
export PRIVATE_KEY=`cat ./gitbu.2018-03-23.private-key.pem`
test.sh
#!/bin/bash
echo "$PRIVATE_KEY";
如果要将密钥与其他环境变量一起保存到.env
文件中,只需将.env
文件中的单引号中的私钥字符串...例如:sh exports HELLO_WORLD='-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA04up8hoqzS1+APIB0RhjXyObwHQnOzhAk5Bd7mhkSbPkyhP1 ... iWlX9HNavcydATJc1f0DpzF0u4zY8PY24RVoW8vk+bJANPp1o2IAkeajCaF3w9nf q/SyqAWVmvwYuIhDiHDaV2A== -----END RSA PRIVATE KEY-----'
因此,以下命令将起作用:
echo "export PRIVATE_KEY='`cat ./gitbu.2018-03-23.private-key.pem`'" >> .env
后跟:
source .env
现在,密钥将位于您的.env文件中,并且只要您获取.env,就会将其导出。
这篇关于如何在Bash/终端中导出多行环境变量例如:RSA私钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!