【发布时间】:2016-04-29 10:26:05
【问题描述】:
我有一个独特的问题,我需要使用 Node 来迭代几个 Unix 风格的命令,看看它们是否存在于 Windows 安装的 path 中。
例如,Windows 本身不支持ls。但是,假设有人安装了 git 并检查了是否包含 Unix 命令,它会。
我需要知道ls和其他命令是否在系统path中。
现在,我使用child_process 在每个命令上运行help。然后我检查运行它的响应。这是混乱和危险的。我不想从 Node 运行 30 条任意命令:
var spawnSync = require('child_process').spawnSync;
var out = spawnSync('ls', ['/?'], {encoding: 'utf8'});
我还能如何检查这些命令是否存在?
【问题讨论】:
-
实际上有middleware 吗?
-
那是草率、懒惰的中间件。它只是做一个
var child = exec('which ' + commandName);。 Windows 上不存在命令which。我已经在寻找一个跨平台的 shell 命令来确定进程是否存在,但我找不到。 -
不确定是否有什么神奇的东西适用于所有事情,如果你知道你是否在使用 dos 或 bash 等,你可能会更好。
-
仅供参考,Windows 和 Linux 都有
where,具有相同的参数 -
糟糕,Windows 有
where,Ubuntu 有whereis,同样的东西,不同的名称。再一次,没有任何东西在任何地方都有效