有人知道如何定义由 cabal 运行的程序访问的环境变量吗?
我想定义我的程序可用的系统环境变量,例如通过System.Environment的“getEnv”函数。这些变量可用于 ghci 中的“getEnv”,但不可用于使用 cabal 运行的程序(“cabal run”)。
我将环境变量定义为:
$ export myvar=MYVALUE
在 ghci 中可以访问它们:
Prelude System.Environment> getEnv "myvar"
"MYVALUE"
但是,类似地在我的程序中使用“getEnv”并使用“cabal run”运行会出现错误:
getEnv: does not exist (no environment variable)
不知何故,我的程序在通过 cabal 运行时找不到它们。我尝试将“导出”语句放入 .bash_profile 中并重新启动终端。但这在 ghci 中工作时遇到了同样的问题,并在与 cabal 一起运行时出现该错误。
最佳答案
感谢您的评论,我意识到这只是由于我犯了一个愚蠢的错误。
我的程序使用了几个不同的环境变量,其中一些已成功读取 - 该错误是由于缺少一个我未在 ghci 中测试过的环境变量造成的。
所以问题是由于没有测试所有变量,这是一个愚蠢的错误,但无论如何感谢您的评论,因为它们有助于诊断问题。
关于Haskell:为什么在 cabal 下运行我的项目时我的环境变量不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40523024/