Terraform不加载在FISH中设置的环境变量



main.tf旁边的项目根文件夹中,我有一个名为load_env.fish的脚本,其中包含以下两行:

set -U AWS_SHARED_CREDENTIALS_FILE "~/path/to/file"
set -U AWS_PROFILE "my_profile"

我运行它,然后我运行命令terraform import foo bar.它给了我Access Denied.

但是,如果我使用 bash 而不是 fish,并且设置了相同的环境变量,那么terraform import foo bar工作。

如果我这样做,我甚至可以让它在鱼身上工作:

  1. 从 Bash 设置环境变量
  2. 从 Bash 开始鱼壳
  3. 现在在鱼壳里,跑terraform import foo bar

所以

如果我使用 bash 而不是鱼,为什么它会起作用?如果鱼壳是从设置了正确环境变量的 bash 壳打开的,为什么它在鱼中起作用?

如何在鱼壳中使用terraform而不必打开嵌套的 bash 和鱼壳?

通用变量在所有 fish 会话之间共享,但它们不会自动导出到子进程

我只是将所有set -U ...实例更改为set -Ux ...,一切正常。

编辑:在看到KurtisRader关于set -Ux缺点的评论并阅读更多内容后,我现在意识到鱼就像bash一样具有source命令。所以,在脚本中我可以使用

set -x foo bar

那我可以

$ source load_env.fish

而不仅仅是

$ ./load_env.fish

相关内容

  • 没有找到相关文章

最新更新