Я только что заметил, что программы на Haskell, запущенные через stack
, не получают переменные окружения из вызывающей среды.Вот пример программы:
-- testenv.hs
import System.Environment
main :: IO ()
main = print =<< getEnv "FOOBAR"
Если я запускаю ее без стека, вот так, она работает:
% FOOBAR=123 runhaskell testenv.hs
"123"
Но с использованием стека:
% FOOBAR=123 stack runhaskell testenv.hs
testenv.hs: FOOBAR: getEnv: does not exist (no environment variable)
То жеиспользуется при компиляции: FOOBAR=123 stack exec testenv
не работает, а FOOBAR=123 .stack-work/install/BLAHBLAH/testenv
работает.
Есть ли способ заставить стек проходить через определенные переменные среды?
Реальная проблема, с которой я столкнулся, заключается в yesod devel
, есть некоторые настройки, которые я хочу переопределить переменными среды, но yesod devel
использует стек для запуска программы, чтобы они не проходили.
Этоэто стек 1.6.5 на NixOS 18.03.132262.0a73111bc29.