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

Shell how to set environment variables from .env file

假设我的.env文件包含如下所示的行:

1
2
USERNAME=ABC
PASSWORD=PASS

与普通的export前缀不同,所以我无法直接获取文件。

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


如果你的行是有效的,那么可信shell而不是export命令

这需要适当的shell引用。 因此,如果你有一个像foo='bar baz'这样的行是合适的,但是如果你写的那行是foo=bar baz则不行

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

如果你的行不是有效的shell

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

1
2
3
while IFS== read -r key value; do
  printf -v"$key" %s"$value" && export"$key"
done

这将导出.env中的所有内容:

1
export $(xargs <.env)


发现这个:

http://www.commandlinefu.com/commands/view/12020/export-key-value-pairs-list-as-environment-variables

1
while read line; do export $line; done < <(cat input)

更新所以我的工作如下:

1
2
#!/bin/sh
while read line; do export $line; done < .env