How to Export a Multi-line Environment Variable in Bash/Terminal e.g: RSA Private Key
export the key
export PRIVATE_KEY=`cat ./gitbu.2018-03-23.private-key.pem`
test.sh
#!/bin/bash
echo $PRIVATE_KEY;
If you want to save the key to a .env
file with the rest of your environment variables, all you needed to do is "wrap" the private key string in single quotes in the .env
file ... e.g: sh exports HELLO_WORLD='-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA04up8hoqzS1+APIB0RhjXyObwHQnOzhAk5Bd7mhkSbPkyhP1 ... iWlX9HNavcydATJc1f0DpzF0u4zY8PY24RVoW8vk+bJANPp1o2IAkeajCaF3w9nf q/SyqAWVmvwYuIhDiHDaV2A== -----END RSA PRIVATE KEY-----'
So the following command will work:
echo "export PRIVATE_KEY='`cat ./gitbu.2018-03-23.private-key.pem`'" >> .env
Followed by:
source .env
Now the key will be in your .env file and whenever you source .env it will be exported.
If you want to export direct value (not from *.pem) then use "
after equals sign. The terminal will let you finish with another "
.
export PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA04up8hoqzS1+
...
l48DlnUtMdMrWvBlRFPzU+hU9wDhb3F0CATQdvYo2mhzyUs8B1ZSQz2Vy==
-----END RSA PRIVATE KEY-----"
NOTE: For me to get the output to work correctly, I had to wrap the environment variable in double quotes. Otherwise it replaced newlines with spaces.
In:
export PRIVATE_KEY=$(cat ./gitbu.2018-03-23.private-key.pem)
Out:
echo "$PRIVATE_KEY"