初始化时加载 .profile 中的秘密内容 bash/zsh

Loading secret content in .profile when initializing bash/zsh

我想在 shell 初始化过程中包含一个带有秘密 Api 密钥的 environment variable。但我不希望在纯文本文件中公开该环境变量。

所以,我想知道是否有内置机制或脚本来执行此操作。

我正在考虑使用 git-crypt 加密 git 存储库。并且在初始化(在 .profile 上)时解密它,获取它,然后将其加密回来,使其他用户无法读取。

几个 sh 函数并使用 gpg 实现了:

SECRETS_FILE=~/.secrets.sh
GPG_ID=yourgpgid@mydomain.com
profile_decrypt (){
  gpg -d ${SECRETS_FILE}.asc > ${SECRETS_FILE} # Decrypt file
  rm ${SECRETS_FILE}.asc
}

profile_encrypt () {
  gpg -ea -r ${GPG_ID} ${SECRETS_FILE} # Encrypt file using ascii output
  rm ${SECRETS_FILE}
}
profile_decrypt
source $SECRETS_FILE
profile_encrypt

其中 ~/.secrets.sh 包含:

export API_KEY=<SECRET API KEY>

.profile 上包含此函数会在每次加载终端时解密、导出变量并将它们加密回来。