如何编写一个 Haskell 程序来启动然后可以在 nix-shell 环境中运行命令?

问题描述

我想启动一个 nix-shell(如果不熟悉 Nix),这可以被认为是加载特定环境的 bashs 地狱,有点昂贵)。一旦作为单独的进程启动,我希望能够向该 shell 发送命令并检索结果。这里可能存在一些与并发问题相关的复杂性,但我认为 shelly 可能能够像这样简单地处理它:

#!/usr/bin/env stack
{- stack script --nix --resolver lts-14.27
     --package async
     --package shelly
-}

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ExtendedDefaultRules #-}
{-# OPTIONS_GHC -fno-warn-type-defaults #-}
  
import Shelly

main :: IO ()
main = shelly $ do
  run_ "nix-shell" ["-p","cargo"]
  run_ "cargo" []

在第一个 run_ 中,我们启动了一个具有 cargo 命令可用的 shell,然后我们应该能够使用对 run_ 的第二次调用来运行该命令。但是,这会导致 an error 的 PATH 似乎不正确 - 奇怪的是,它甚至不再包含路径中的 nix-shell

我愿意接受有关如何使用各种方法(不一定是 shelly)执行此操作的建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)