Используя модуль Node child_process, я хотел бы выполнять команды через оболочку cygwin. Это то, что я пытаюсь:
var exec = require('child_process').execSync;
exec('mkdir -p a/b/c', {shell : 'c:/cygwin64/bin/bash.exe -c'});
TypeError: invalid data
at WriteStream.Socket.write (net.js:641:11)
at execSync (child_process.js:503:20)
at repl:1:1
at REPLServer.defaultEval (repl.js:262:27)
at bound (domain.js:287:14)
at REPLServer.runBound [as eval] (domain.js:300:12)
at REPLServer. (repl.js:431:12)
at emitOne (events.js:82:20)
at REPLServer.emit (events.js:169:7)
at REPLServer.Interface._onLine (readline.js:212:10)
Я вижу Node child_process.js добавит ключи /s и /c, независимо от параметра shell bash.exe не знает, что делать с этими аргументами.
Я нашел работу для этой проблемы, но она действительно не идеальна:
exec('c:/cygwin64/bin/bash.exe -c "mkdir -p a/b/c"');
Выполнение вышеуказанного, очевидно, будет работать только в системах Windows, а не в UNIX.
Как я могу выполнять команды в оболочке cygwin из NodeJS?