是否可以在使用通过 shebang 调用的 nix-shell 时设置环境变量?例如,我正在使用
#! /usr/bin/env nix-shell
#! nix-shell -i runghc --pure
Run Code Online (Sandbox Code Playgroud)
并想设置一个环境变量,例如FOO=bar. 注意,FOO不一定是由周围环境定义的。因此这--keep FOO不是一个选择。
您似乎正在使用随附shell.nix文件。您可以简单地将环境变量定义为派生属性。
shell.nix
pkgs.mkShell {
buildInputs = [ pkgs.ghc ];
shellHook = ''
VIA_SHELL_HOOK=it\ works # no it doesn't
'';
VIA_DRV_ATTR = "working";
}
Run Code Online (Sandbox Code Playgroud)
可执行脚本示例
#!/usr/bin/env nix-shell
#!nix-shell -i runghc --pure
import System.Environment(getEnv)
main = do
getEnv "VIA_DRV_ATTR" >>= print
getEnv "VIA_SHELL_HOOK" >>= print
Run Code Online (Sandbox Code Playgroud)
输出:
"working"
hello: VIA_SHELL_HOOK: getEnv: does not exist (no environment variable)
Run Code Online (Sandbox Code Playgroud)
(Nix 2.3.4、Nixpkgs 20.03)
| 归档时间: |
|
| 查看次数: |
1892 次 |
| 最近记录: |