- {Object}
process.env 属性会返回包含用户环境的对象。
参见 environ(7)。
此对象的示例如下所示:
{TERM: 'xterm-256color',SHELL: '/usr/local/bin/bash',USER: 'nodejscn',PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',PWD: '/Users/nodejscn',EDITOR: 'vim',SHLVL: '1',HOME: '/Users/nodejscn',LOGNAME: 'nodejscn',_: '/usr/local/bin/node'}
可以修改此对象,但这些修改不会反映到 Node.js 进程之外,或者(除非明确地要求)反映到其他 [Worker] 线程。
换句话说,以下示例不会起作用:
$ node -e 'process.env.foo = "bar"' && echo $foo
以下示例则会起作用:
process.env.foo = 'bar';console.log(process.env.foo);
在 process.env 上为属性赋值会隐式地将值转换为字符串。
不推荐使用此行为。
当值不是字符串、数字或布尔值时,Node.js 未来的版本可能会抛出错误。
process.env.test = null;console.log(process.env.test);// => 'null'process.env.test = undefined;console.log(process.env.test);// => 'undefined'
使用 delete 可以从 process.env 中删除属性。
process.env.TEST = 1;delete process.env.TEST;console.log(process.env.TEST);// => undefined
在 Windows 操作系统上,环境变量不区分大小写。
process.env.TEST = 1;console.log(process.env.test);// => 1
除非在创建 [Worker] 实例时显式地指定,否则每个 [Worker] 线程都有自己的 process.env 副本(基于其父线程的 process.env,或者指定为 [Worker] 构造函数的 env 选项的任何内容)。
对于 process.env 的更改在 [Worker] 线程中是不可见的,并且只有主线程可以做出对操作系统或原生插件可见的更改。
