Команда истории не распознается как внутренняя команда в child_process - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь сделать крючок для Github в js. Поэтому мне нужно получить предыдущую команду, но child_process не распознает команду history, которая отлично работает в моем windows git bash.

Это код, который у меня есть

const { exec } = require("child_process");
const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

exec('history 2', (err, res, er) => {
  console.log(res)
});

1 Ответ

1 голос
/ 15 апреля 2020

history - это не программа (не двоичный файл или скрипт), а команда , встроенная в bash. Вы можете запустить его только с bash - и только в интерактивном режиме:

$ bash -c "history 2"
(no output because it's non-interactive)

. В неинтерактивном сеансе вы должны прочитать историю, прежде чем использовать ее:

$ bash -c "history -r && history 2"
the previous command
the last command

Мой совет должен использовать fc вместо history. С помощью fc вы можете выбрать одну команду для отображения. Например, чтобы получить предыдущую команду, используйте индекс -2:

$ bash -c "history -r && fc -ln -2 -2"
the previous command
...