我想发起一个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。