• {Object}

    process.env 属性会返回包含用户环境的对象。 参见 environ(7)。

    此对象的示例如下所示:

    1. {
    2. TERM: 'xterm-256color',
    3. SHELL: '/usr/local/bin/bash',
    4. USER: 'nodejscn',
    5. PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin',
    6. PWD: '/Users/nodejscn',
    7. EDITOR: 'vim',
    8. SHLVL: '1',
    9. HOME: '/Users/nodejscn',
    10. LOGNAME: 'nodejscn',
    11. _: '/usr/local/bin/node'
    12. }

    可以修改此对象,但这些修改不会反映到 Node.js 进程之外,或者(除非明确地要求)反映到其他 [Worker] 线程。 换句话说,以下示例不会起作用:

    1. $ node -e 'process.env.foo = "bar"' && echo $foo

    以下示例则会起作用:

    1. process.env.foo = 'bar';
    2. console.log(process.env.foo);

    process.env 上为属性赋值会隐式地将值转换为字符串。 不推荐使用此行为。 当值不是字符串、数字或布尔值时,Node.js 未来的版本可能会抛出错误。

    1. process.env.test = null;
    2. console.log(process.env.test);
    3. // => 'null'
    4. process.env.test = undefined;
    5. console.log(process.env.test);
    6. // => 'undefined'

    使用 delete 可以从 process.env 中删除属性。

    1. process.env.TEST = 1;
    2. delete process.env.TEST;
    3. console.log(process.env.TEST);
    4. // => undefined

    在 Windows 操作系统上,环境变量不区分大小写。

    1. process.env.TEST = 1;
    2. console.log(process.env.test);
    3. // => 1

    除非在创建 [Worker] 实例时显式地指定,否则每个 [Worker] 线程都有自己的 process.env 副本(基于其父线程的 process.env,或者指定为 [Worker] 构造函数的 env 选项的任何内容)。 对于 process.env 的更改在 [Worker] 线程中是不可见的,并且只有主线程可以做出对操作系统或原生插件可见的更改。