我正在创建一个使用与服务器交互的外部程序的脚本。我想在尝试使用该程序之前先测试该程序是否已安装。
我查找了判断程序是否已安装的首选方法,并找到了这篇文章: How can I check if a program contains from a Bash script?
TLDR:它建议使用“command -v <prog-name>”而不是“which <prog-name>”,因为它是 POSIX 兼容的。如果找到程序,该命令应返回 0,否则返回 >0。
所以我从 System.Process 中使用readProcessWithExitCode如下
readProcessWithExitCode "command" ["-v", "<some-program>"] ""
Run Code Online (Sandbox Code Playgroud)
在 GHCI 中测试时出现以下错误
异常:命令:readCreateProcessWithExitCode:posix_spawnp:不存在(没有这样的文件或目录)
我尝试在“命令”上使用“which”。它告诉我它不存在,尽管我可以使用它,并且它的工作原理如我的终端中的手册页中所述。
这是怎么回事?我如何查看是否使用 Haskell 安装了某些内容?
一些系统信息: