Команды открытия терминала и запуска

#node.js #electron

#node.js #электронный

Вопрос:

В моем приложении electron / reactjs я пытаюсь открыть терминал и запустить некоторые команды.

Мой код выглядит следующим образом :

 const terminal = 'x-terminal-emulator';
const { spawn } = require('child_process');
spawn(terminal);
  

Мой терминал открывается, но я не знаю, как запускать команды в этом терминале, например ‘cd / my / custom / path amp;amp; ls’

Кто-нибудь может мне помочь, пожалуйста? 🙂

Комментарии:

1. Вам не нужен никакой терминал для выполнения команд. spawn('ls /my/custom/path');

2. Это выдает ошибку Uncaught Error: spawn ls /home/test ENOENT at Process.ChildProcess._handle.onexit (internal/child_process.js:232) at onErrorNT (internal/child_process.js:407) at process._tickCallback (internal/process/next_tick.js:63)

3. То, что я хочу, больше похоже на выполнение ‘xterm -e «echo hi; bash»‘

4. Это была моя ошибка. Вам нужно передать аргументы для команды ls в массиве, подобном этому spawn('ls', ['/my/custom/path]); Смотрите документы nodejs.org/api /…

5. Спасибо, у меня больше нет этой ошибки, но как можно поместить эту команду в терминал?

Ответ №1:

Node.js у child_process.spawn команды есть опция, указывающая оболочку, которую вы хотите использовать.

Поэтому я бы использовал противоположную логику и запустил команду непосредственно в конкретной оболочке (например, bash):

 const { spawn } = require('child_process');
const terminal = '/bin/bash';

let cmd = 'echo $SHELL';

spawn(cmd, { shell: terminal })
  .stdout.on('data', (data) => {
    console.log(`stdout: ${data}`);  //-> stdout: /bin/bash
});