4

与此问题相关:nix-shell:如何指定自定义环境变量?

有了这个推导:

stdenv.mkDerivation rec {
  FOO = "bar";
}

FOO将在 nix shell 中作为环境变量提供,但是否可以从 env 文件加载环境变量?

4

1 回答 1

4

您可以使用nix-shell'sshellHook从文件中加载环境变量,方法是将它们作为 shell 代码采购。例如:

stdenv.mkDerivation {
  name = "my-shell";
  shellHook = ''
    # Mark variables which are modified or created for export.
    set -a
    source env.sh
    # or to make it relative to the directory of this shell.nix file
    # source ${toString ./env.sh}
    set +a
  '';
}

如果您的外壳也不是一个包,您可以切换stdenv.mkDerivation到。mkShell

于 2020-05-04T21:22:19.667 回答