从gpg加密的shell脚本设置环境变量?

从gpg加密的shell脚本设置环境变量?,shell,encryption,zsh,Shell,Encryption,Zsh,我试图将S3的一些环境变量存储在加密的shell脚本中(这样这些密钥就不会未加密地存储在我的驱动器上),如下所示: 这保存为shell脚本setenv.sh,我已将其加密为setenv.sh.gpg 我正在尝试使用eval$(gpg--decrypt./setenv.sh.gpg)运行文件脚本,该脚本将对文件进行解密,但不会相应地加载环境变量(printenv确认了这一点) 我觉得这可能与这个问题有关: 但是,我尝试了许多不同的source变体,但都没有效果,因为我假设source需要的是一个文

我试图将S3的一些环境变量存储在加密的shell脚本中(这样这些密钥就不会未加密地存储在我的驱动器上),如下所示:

这保存为shell脚本
setenv.sh
,我已将其加密为
setenv.sh.gpg

我正在尝试使用
eval$(gpg--decrypt./setenv.sh.gpg)
运行文件脚本,该脚本将对文件进行解密,但不会相应地加载环境变量(printenv确认了这一点)

我觉得这可能与这个问题有关:

但是,我尝试了许多不同的
source
变体,但都没有效果,因为我假设
source
需要的是一个文件,而不是脚本的内容


如何使用gpg加密的shell脚本来设置环境变量?

正如第一位评论员在Zsh中所说的
source,您应该能够调用:

$(gpg --decrypt ./setenv.sh.gpg)
或者在脚本中弹出该行,然后使用
调用该行,例如:

. decrypt-and-setenv.sh

这会将env vars导出到当前shell中,并对文件进行加密。

在Bash中可以这样做;Zsh有吗<代码>源代码我之所以考虑这样设置脚本,是因为我可以为不同的项目加载不同的S3键,而无需每次手动输入。就安全性而言,我认为这是一个好主意,以防我的笔记本电脑被盗或受损。(我有完整的磁盘加密,但它也可能在解锁时被盗等)我认为它有资格成为“通过模糊实现的安全”,但只要您认识到这一点,并认识到其局限性,就不会造成太大的伤害。特别是,在我看来,您不应该依赖于此来确保一切安全。出于某种原因,运行此命令会重复几行,说明它需要一个用于gpg解密的密码短语,但从不提示输入密码?我甚至不能用ctrl+c键返回shell。奇怪的是,它在bash中工作,但在zsh中不工作,即使暂时完全删除我的
.zshrc
配置文件,我认为您需要使用
而不是
源代码
与zsh一起使用
. decrypt-and-setenv.sh