我需要一种永久设置环境变量的方法。我可以暂时只在 Windows 中使用此功能,但理想情况下我想要一个与操作系统无关的解决方案。据我所知,Node 只会为当前进程/子进程设置 var。我想要的可能吗?
最佳答案
可能可以使用setx
和 export
,尽管不确定所需的含义/权限(我假设在 Windows 中需要 UAC 碰撞,而在 Linux 中则需要 sudo)。这是最好的猜测:
var exec = require('child_process').exec;
// Add FOO to global environment with value BAR
// setEnv('FOO', 'BAR', callback)
// Append /foo/bar to PATH
// setEnv('PATH', '+=;/foo/bar', callback)
function setEnv(name, value, cb) {
if (!name) throw new Error('name required.');
if (typeof value === 'undefined') throw new Error('value required.');
var cmd;
if (value.indexOf('+=') === 0) value = process.env[name] + value.substring(2);
value = value.indexOf(' ') > -1 ? `"${value}"` : value;
switch (process.platform) {
case 'linux': cmd = `export ${name}=${value}`; break;
case 'win32': cmd = `setx ${name} ${value} /m"; break;
default: throw new Error('unsupported platform.'); break;
}
exec(cmd, cb);
}
我应该提到这确实不理想;我建议将它们定义为执行任务的一部分,或者考虑使用类似 dotenv 的内容。 .
关于node.js - 是否可以永久设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519452/