Ответ 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)
Возможно, это даст вам некоторые идеи для работы.