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")]