如何在node.js中导出env变量

How to export env variable in node.js

本文关键字:env 变量 js node      更新时间:2023-09-26

我非常喜欢我的node.js,所以我想使用它作为bash启动脚本~/.bashrc,但我不知道如何导出变量。

目前我不得不使用这种方法:

export PS1=`node ~/PS1.js`
export PS2=`node ~/PS2.js`
export PATH=`node ~/PATH.js`

相反,我想要.bashrc看起来有

#!/usr/local/bin/node
//do something, define functions
export_var('PS1', PS1())
export_var('PS2', PS2())
export_var('PATH', generatePATH())

process.env.PATH = something导出,只为当前执行的进程设置,该进程本身就是节点。

Node.js将在一个单独的进程中运行,该进程将获得环境的副本。您不能更改父进程(执行.bashrc的进程)的环境。

但以下问题有一个答案:shell脚本可以设置调用shell的环境变量吗?

您可以在node.js中编写一个新的脚本文件,并通过source调用它。

一种可能的方法是使用JS打印出导出语句,然后在shell中使用eval在当前shell中对其求值。

例如test.js

#!/usr/bin/env node
console.log('export A=40; export B=10');

外壳内:

eval `./test.js`
echo $A

在我的情况下,它是有效的:

const exportVar = (name, value) => {
    process.env[name] = value;
};
exportVar("NODE_ENV", "test");

但在某些情况下,使用exec(或spawn):也很有用

const { execSync } = require('child_process');
execSync("NODE_ENV=test && echo $NODE_ENV", {
    stdio: 'inherit',
});