I have a shell script running in my mac with contents below:
echo "Getting secrets"
aws secretsmanager get-secret-value --secret-id my-secret-id --query SecretString --output text | jq -r 'to_entries|map("\(.key)=\(.value|tostring)")|.[]' > /tmp/secrets.txt
# echo "#!/bin/sh" > /tmp/env.sh
echo "Secret retrieved, exporting"
cat /tmp/secrets.txt | sed 's/^/export my_db_/' > /tmp/env.sh
echo "echo 'Secrets exported'" >> /tmp/env.sh
rm -f /tmp/secrets.txt
echo "Done"
The script reads a db credential secret from AWS secret manager and export into a file named /tmp/env.sh
. The exported file looks like below:
export my_db_username=user
export my_db_password=pwd
export my_db_engine=engine
export my_db_host=host
export my_db_port=123
export my_db_name=dev
echo 'Secrets exported'
I then run chmod -R 755 /tmp/env.sh
to grant necessary permission to execute it. However, executing the /tmp/env.sh
doesn't set the environment variable at all. echo $my_db_host
returns me empty output. The echo message Secrets exported
does get printed though.
Could anyone advise what I did wrong here?