Дочерний процесс не запускается как bash
. child_process порождает исполняемый файл, используя обычную оболочку sh
. Если вам нужно, чтобы команды выполнялись в bash
, запускаемая вами командная строка должна быть заключена в bash -c
. Например:
command('bash -c "my command here"');
Кроме того, каждая выполняемая вами команда является подпроцессом, который не влияет ни на родительский процесс, ни на любые последующие подпроцессы. Таким образом, встроенная оболочка, такая как cd
, изменит только каталог для этого подпроцесса, который немедленно исчезнет. Вы увидите это, если запустите:
command('cd /');
command('ls');
Команда ls
покажет текущий рабочий каталог, а не каталог root.
Если вы запустите команду с bash -c
а $PATH
и другие переменные среды по-прежнему не настроены так, как вам нужно, вам нужно отладить сценарии запуска оболочки. Возможно, есть разница между интерактивными оболочками (.bash_profile
) и всеми оболочками (.bashrc
).
Обратите внимание, что для полностью неинтерактивных оболочек может потребоваться явно указать сценарий запуска, который вы хотите запустить.