1

我想发起一个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_。但是,这会导致PATH 似乎不正确的错误nix-shell- 奇怪的是,即使在路径中它也不再是容器。

我愿意接受有关如何使用各种方法来执行此操作的建议,而不必使用 shelly。

4

0 回答 0