Установить переменную среды в node.js, а затем использовать ее в терминале?

Я хотел бы добавить экологическую переменную во время выполнения файла js с помощью node.js.

Что-то вроде: process.env ['VARIABLE'] = 'значение';

Я использую терминал для запуска js файла с помощью модуля, я могу установить переменную, а затем использовать ее во время выполнения js файла, но я бы хотел установить переменную, используя "process.env", а затем, когда выполнение закончится, я хотел бы использовать его в терминале или в другом js-процессе.

Я знаю, что это возможно, используя child_process.exec, и используйте SET (Windows) или EXPORT (Mac и Linux), но просто спрашивайте, как это возможно, это может быть возможно или с помощью какого дизайна или процесса добавить его, просто используя "process.env".

Спасибо заранее, ребята.

Ответ 1

Модель разрешений unix не позволит дочернему процессу (ваше приложение node.js) изменить среду своего родительского процесса (оболочка, запущенная внутри вашего терминала). То же самое относится к текущему рабочему каталогу, эффективному uid, эффективному gid и нескольким другим параметрам для каждого процесса. AFAIK нет никакого прямого способа сделать то, что вы просите. Вы можете сделать что-то вроде команды print, чтобы установить ее на stdout, чтобы пользователь мог легко скопировать/вставить эту команду оболочки в свой терминал, но лучше всего объяснить более широкую проблему, которую вы пытаетесь решить в отдельном вопросе, и позволить людям расскажите вам о жизнеспособных способах выполнения этого, а не о попытке изменить родительскую среду процесса.

Одним из возможных способов решения проблемы было бы просто, как запустить вашу программу node с терминала следующим образом:

export SOME_ENV_VAR="$(node app.js)"

и app.js просто напечатайте нужное значение с помощью process.stdout.write.

Второй взлом будет оболочкой оболочки script в следующих строках:

app.sh

#!/bin/bash
echo app.sh running with SOME_ENV_VAR=${SOME_ENV_VAR}
echo "app.sh running app.js"
export SOME_ENV_VAR="$(node app.js)"
exec /bin/bash

app.js

console.log("Some Value at " + Date());

Запуск этого в интерактивной оболочке вашего терминала

echo $SOME_ENV_VAR

exec ./app.sh
app.sh running with SOME_ENV_VAR=
app.sh running app.js

echo $SOME_ENV_VAR 
Some Value at Thu Mar 27 2014 08:13:01 GMT-0600 (MDT)

Возможно, это даст вам некоторые идеи для работы.