首页 > 解决方案 > 如何使用 Shake 分配 PTY?

问题描述

我正在尝试从我的构建脚本以交互方式运行命令:

#!/usr/bin/env stack
{- stack
script
--resolver lts-18.8
--ghc-options -Wall
-}
import Development.Shake

main :: IO ()
main = shakeArgs shakeOptions $ do
  phony "cfg" $ do
    command_ [] "vim" []

但它不起作用。我想我需要分配一个终端才能以交互方式运行 vim。我怎样才能做到这一点?

标签: haskellshake-build-system

解决方案


Shake运行命令(等)的功能command是为cmd无需用户交互而运行的批处理命令而设计的。虽然您可以做一些事情来使它们与 Vim 之类的东西更兼容(例如InheritStdin),但 Shake 的某些方面可能会使事情变得更难(例如捕获标准错误,这可能会导致内存泄漏)。

令人高兴的是,Shake 可以与 中的函数一样工作,因此您可以编写以下代码System.Process,而不是调用:command

liftIO $ System.Process.createProcess $ System.Process.shell "vim"

记录具有多种类型的createProcess进程相关设置,因此可以自定义以使 Vim 工作。


推荐阅读