微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何编写一个 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 举报,一经查实,本站将立刻删除。