Вы не экспортируете переменную.Когда вы просто делаете
key1=123
, переменная не распространяется на подпроцессы.Он будет доступен в вашем текущем процессе bash
, поэтому вы сможете увидеть его при наборе echo $key1
, но он не будет унаследован процессом node
.Как говорит man bash
:
Когда должна выполняться простая команда, отличная от встроенной функции или функции оболочки, она вызывается в отдельной среде выполнения, которая состоит из следующего.Если не указано иное, значения наследуются от оболочки.
[...]
переменные оболочки и функции, отмеченные для экспорта, а такжес переменными, экспортированными для команды, переданными в среде
Вам нужно либо определить переменную как экспортированную
export key1=123
, либо пометить существующую переменную дляэкспортируйте
key1=123
export key1
или запустите ваш узел с измененной средой, либо с помощью встроенной в bash возможности сделать это
key1=123 node code.js
, либо с помощью утилиты /usr/bin/env
:
env key1=123 node code.js
Как только переменная будет правильно передана процессу узла, она будет доступна как в process.env.key1
, так и как $key1
в дочернем процессе.
EDIT: Я только что заметил, что вы фактически дали командуты бежишь;это не имеет значения, та же логика применяется для каждого исполняемого файла, node
или npm
или чего-либо еще.