Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何在类型化流程中为新流程设置其他环境变量?_Haskell_Process_Typed Process - Fatal编程技术网

Haskell 如何在类型化流程中为新流程设置其他环境变量?

Haskell 如何在类型化流程中为新流程设置其他环境变量?,haskell,process,typed-process,Haskell,Process,Typed Process,我想要一个新的进程来继承现有的环境变量,并设置我自己的环境变量 我只看到两个选项来设置环境变量: 我可以使用System.environment.getEnvironment手动获取所有环境变量的列表,但是它的文档()提到: getEnvironment将整个环境检索为 (键,值)对 如果环境条目不包含“=”字符,则键为 整个条目和值都是空字符串 这似乎有点不确定 通过源代码查看,似乎有一个数据构造函数,它在pcEnv::]中设置了环境变量!(可能是[(字符串,字符串)])-但这似乎没有导出。

我想要一个新的进程来继承现有的环境变量,并设置我自己的环境变量

我只看到两个选项来设置环境变量:

我可以使用
System.environment.getEnvironment
手动获取所有环境变量的列表,但是它的文档()提到:

getEnvironment将整个环境检索为 (键,值)对

如果环境条目不包含“=”字符,则键为 整个条目和值都是空字符串

这似乎有点不确定



通过源代码查看,似乎有一个数据构造函数,它在
pcEnv::]中设置了环境变量!(可能是[(字符串,字符串)])
-但这似乎没有导出。是否有一些方法可以修改此值?

可以使用
unix
软件包解决一个问题:

import System.Posix.Env (getEnvironment)

currentEnv <- getEnvironment
let totalEnv = currentEnv ++ [("KUBECONFIG","k8s.cfg")]
import System.Posix.Env(getEnvironment)

currentEnv POSIX规范将环境定义为一个字符串列表,由一个名称和一个由
=
连接的值组成
getEnvironment
只是确保像
foo
这样的条目被视为“正确的”条目
foo=
。而且,
pcEnv
在这里也没有帮助。它是由
setEnv
(设置为
Just
环境)和
setenvirit
(设置为
Nothing
)设置的配置选项。据我所知,您使用
getEnvironment
并向结果中添加其他选项的解决方案是做您想做的事情的正确方法。
import System.Posix.Env (getEnvironment)

currentEnv <- getEnvironment
let totalEnv = currentEnv ++ [("KUBECONFIG","k8s.cfg")]