В командной строке, если я запускаю
echo -n "foo" | openssl aes-128-cbc -k "key" -base64 -e
(флаг -n
не позволяет echo
добавить новую строку в конец его вывода), я получаю
U2FsdGVkX1+nMW5I4eZSasPKfsUuCpbFsnn56ngEdec=
Но когда я запускаю
exec = require('child_process').exec;
exec('echo -n "foo" | openssl aes-128-cbc -k "key" -base64 -e', callback);
, обратный вызов получает вывод
U2FsdGVkX1/CARBiGos0x9ALNhFqcIaFvZ9EUvVBxuc=
Почему это отличается?Расшифруйте его, и вы получите строку
-n foo
Так или иначе, exec
закодировал -n "foo"
в "-n foo"
(под узлом 0.4.2).
Вот самый странныйчасть: я не вижу этой проблемы, когда я запускаю свой код непосредственно из TextMate (через комплект CoffeeScript от jashkenas).Сначала я думал, что это проблема пути, но это не так (создание PATH
идентичных в двух средах не дало эффекта).Возможно, это потому, что одна среда - TTY, а другая - нет.
Знают ли другие люди об этом несоответствии?Это ошибка узла или я что-то игнорирую?Я предполагаю, что мои проблемы исчезнут, если я использую нижний уровень spawn
вместо exec
.