如何从 bazel 中的文件中导出环境变量

How to export environment variables from files in bazel

bazel --action_env可以一一指定变量

如果有.env文件,如何导出?

如果你运行它在类似 U*X 的系统上,对于你的文件格式每行一对 var=val,你可以 运行 这样的东西(注意这有点天真,如果任何变量值中有空白字符,就会中断):

bazel build $(while read l; do echo "--action_env $l"; done < .env) //target

它确实为命令行上的每一行输入添加了 --action_env line_of_input_from_your_file

或者(这个更健壮一点,不应该关心空格,但它也需要 xargs 才能工作):

while read l; do echo -ne "--action_env[=11=]$l[=11=]"; done < .env \
    | xargs -x0 bazel build //target

这会读取每一行输入并打印 --action_env 并且该行本身都以空字符结尾。 xargs 然后将 运行 bazel build //target 后跟上一步中的每个空分隔项 (-0) 作为附加参数。如果结果行太长(超过允许的限制),-x 是为了确保我们失败而不是将输入拆分为多个 bazel 调用。

但是不,bazel 没有专用的命令行选项来读取您描述的格式(或任何格式)的文件并使用它来定义其操作的环境。一般来说,这种操纵似乎会产生非常广泛的影响,而且不太可能完全合理。 IE。如果你真的需要这样做并且你确定这是继续的方式,你需要使用另一个工具,例如 shell,准备命令行 运行 bazel 或填充 bazel 命令到 运行.

的环境