waj/shell-secrets

这是一个小型工具,用于从使用 GPG 加密的文件中设置环境变量。

shell-secrets

很多命令行工具都需要包含敏感值的环境变量才能工作。这些值通常保存在未加密的 shell 文件中。我创建了这个简单但有用的脚本,用于从加密文件中读取敏感值,同时可以方便地登录和退出不同的帐户。

安装

注意:假设已经为当前用户安装并配置了 GPG。

shell-secrets.sh 文件复制到磁盘上的任意位置。在你的 profile shell 脚本中添加以下行:

source /path/to/shell-secrets.sh

此外,建议修改 shell 提示符以显示当前登录名。例如,可以将其插入你的 PS1 变量中:

export PS1='... \e[31m$SECRET_LOGIN\e[0m ...'

变量 $SECRET_LOGIN 保存当前 shell 中正在使用的帐户名称列表。

用法

创建密钥文件

首先,确保 ~/.shell-secrets/ 目录存在。这是存储加密文件的位置:

mkdir -p ~/.shell-secrets

现在使用 GPG 创建新的加密文件:

$ gpg --encrypt -r yourself@some.email.com --armor --output ~/.shell-secrets/foo.gpg
export FOO=E9yyQ7MApwoQHXBCIs7or5aQ9W
export BAR=lLvxSCbY4j+Kdn
...
^D

完成!

登录

要使用任何加密文件登录,只需调用 login 函数,并传入文件名(不带 .gpg 扩展名):

$ login foo
foo $ env
...
FOO=E9yyQ7MApwoQHXBCIs7or5aQ9W
BAR=lLvxSCbY4j+Kdn
...

环境变量已设置好可以使用,并且 SECRET_LOGIN 环境变量已更新,可供提示符使用。该脚本还包括对 .shell-secrets 目录中可用文件名的自动补全。

可以嵌套多个登录:

$ login foo
foo $ login bar
foo bar $

注销

每次使用 login 函数时,都会创建一个新的子 shell 进程。要从当前帐户注销,请调用 logout 或直接按 Ctrl+D

关于

加密环境变量