gpt4 book ai didi

javascript - 在 node.js 中设置一个环境变量,然后在终端中使用它?

转载 作者:搜寻专家 更新时间:2023-10-31 22:27:26 25 4
gpt4 key购买 nike

好吧,我想在使用 node.js 执行 js 文件期间添加一个环境变量。

类似于:process.env['VARIABLE'] = '值';

我正在使用终端使用模块运行 js 文件,我可以设置变量然后在 js 文件执行期间使用它,但我想使用“process.env”设置变量,然后当执行结束时,我想在终端中使用它,或者在另一个 js 进程中使用它。

我知道可以使用 child_process.exec,并使用 SET (Windows) 或 EXPORT (Mac & Linux),但只是询问它如何可能,或者使用哪个设计或进程来添加它,只需使用“process.env”。

在此先感谢大家。

最佳答案

unix 权限模型不允许子进程(您的 node.js 应用程序)更改其父进程(在您的终端内运行的 shell)的环境。这同样适用于当前工作目录、有效 uid、有效 gid 和其他几个每个进程的参数。 AFAIK 没有直接的方法来做你所要求的。您可以执行诸如打印命令以将其设置为标准输出之类的操作,以便用户可以轻松地将 shell 命令复制/粘贴到他们的终端中,但最好的办法是在一个单独的问题中解释您试图解决的更广泛的问题,并让人们告诉您完成该任务的可行方法,而不是尝试更改父进程的环境。

一种可能的解决方法很简单,就像这样从终端运行 Node 程序:

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

并让 app.js 通过 process.stdout.write 打印所需的值。

第二个 hack 将是一个包装器 shell 脚本,遵循以下几行:

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());

在终端的交互式 shell 中运行它

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)

也许这些会给你一些工作的想法。

关于javascript - 在 node.js 中设置一个环境变量,然后在终端中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22681043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com