当前位置: 首页 > 知识库问答 >
问题:

如何从. env文件设置环境变量

范麒
2023-03-14

假设我有. env文件包含如下行:

USERNAME=ABC
PASSWORD=PASS

不像普通的文件有< code>export前缀,所以我不能直接获取文件。

创建从. env文件加载内容并将其设置为环境变量的外壳脚本的最简单方法是什么?

共有3个答案

龙宣
2023-03-14

这是我使用的:

function load_dotenv(){
  # https://stackoverflow.com/a/66118031/134904
  source <(cat $1 | sed -e '/^#/d;/^\s*$/d' -e "s/'/'\\\''/g" -e "s/=\(.*\)/='\1'/g")
}

set -a
[ -f "test.env" ] && load_dotenv "test.env"
set +a

如果你使用的是< code>direnv,要知道它已经支持< code >。现成的env文件:)

将其添加到您的. envrc

[ -f "test.env" ] && dotenv "test.env"

direnv标准库的文档:https://direnv.net/man/direnv-stdlib.1.html

楚意
2023-03-14

这将导出中的所有内容。环境:

export $(xargs <.env)

编辑:这要求环境值没有空格。如果这与您的用例不匹配,您可以使用Charles提供的解决方案

Edit2:我建议在您的配置文件中添加一个函数,这样您就不必记住< code>set -a的细节或< code>xargs的工作方式。

秦滨海
2023-03-14

这需要适当的外壳报价。因此,如果您有类似foo='bar-baz'的行,但如果写同一行则不合适

set -a # automatically export all variables
source .env
set +a

下面读取键/值对,不期望或尊重shell引用。

while IFS== read -r key value; do
  printf -v "$key" %s "$value" && export "$key"
done <.env
 类似资料:
  • ENV 设置环境变量 格式有两种: ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>... 这个指令很简单,就是设置环境变量而已,无论是后面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。 ENV VERSION=1.0 DEBUG=on \ NAME="Happy Feet" 这个例子中演示了如何换行,以

  • 问题内容: 如何从Java设置环境变量?我看到我可以使用来对子流程执行此操作ProcessBuilder。不过,我有几个子流程要启动,所以我宁愿修改当前流程的环境,并让这些子流程继承它。 有一个获取单个环境变量的方法。我还可以使用获取Map完整的环境变量集。但是,调用put()该方法Map将引发-显然,这意味着该环境是只读的。而且,没有。 那么,有什么方法可以在当前运行的进程中设置环境变量?如果是

  • 我想在我的Python项目中添加一些全局环境变量。我的想法是添加一个<代码>。env,并设置一些变量,如下所示: 在Python中,我如何能够在我的项目中访问这些变量。在网上,我看到,其中也被导入,但这似乎不起作用。有人知道我如何做到这一点吗?我还可以设置一个文件来包含这些全局变量。或者,如果有更好的Python实践,有人能分享一下吗?

  • 我想在启动脚本中设置环境变量(如),同时仍然能够仅用一个命令启动应用程序。

  • 我如何将一组键/值对从文本文件导出到shell环境中? 以下是问题的原始版本,并举例说明,以资记录。 我正在bash中编写一个脚本,它解析某个文件夹中包含3个变量的文件,这是其中之一: 然后,我的脚本minientrega.sh使用以下代码解析文件: 但是当我在命令行中执行时,它不会设置环境变量 我还尝试使用,但同样的问题仍然存在

  • 问题内容: 我开始研究一个项目,它使用了Github私有存储库中的一些私有模块,每当我尝试运行它时,都会出现以下错误: 验证github.com/repoURL/go- proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go- proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang。 or