Haskell:为什么在 cabal 下运行我的项目时我的环境变量不可用?

标签 haskell environment-variables cabal

有人知道如何定义由 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/

相关文章:

list - 如果列表的元素符合某些条件,则更改列表元素,如果不符合,则使用 Data.Lens 添加新元素

haskell - 为什么在 Haskell 中 0^0 == 1?

python - 使用 os.path.expandvars 时防止出现空环境变量

haskell - `stack ghci app:exe:executable` 的 cabal 相当于什么?

haskell - cabal的 "Warning: Falling back to topdown solver for GHC < 7."是什么意思?

haskell - cabal 可以警告依赖项中未使用的包吗?

haskell - 数据加载/卸载和处理逻辑分离

Haskell Control.镜头移动棱镜

linux - 设置 flutter 路径时遇到问题 - 找不到 flutter 命令

php - 如何让PHP能够读取系统环境变量