Kat*_*itz 3 windows bash environment-variables node.js
这是我能找到的最健全的文档process.env:https://nodejs.org/api/process.html#process_process_env.
它提到了USER,但没有USERNAME.在我的机器上(Windows/Bash),当我打印内容时process.env,我看到USERNAME(我的Windows用户名),但没有USER.同样,echo $USERNAME显示我的名字但不echo $USER返回任何内容.
USER和之间有什么区别USERNAME?它是一个操作系统吗?它们可以互换吗?
process.env您链接到的文档显示了一个示例环境; 它并不意味着规范. process.env基本上可以是任何东西 - 它的值通常具有由shell提供的操作系统默认值,但最终它们由用户和/或启动进程的进程控制.
即,用户可以运行
$ USER=lies node script.js
Run Code Online (Sandbox Code Playgroud)
...并且process.env不包含真实的用户名.
如果您有兴趣获取有关您的进程正在运行的用户的信息,请调用os.userInfo(),这在整个平台上(大多数是1)一致.
> os.userInfo()
{ uid: -1,
gid: -1,
username: 'josh',
homedir: 'C:\\Users\\josh',
shell: null }
Run Code Online (Sandbox Code Playgroud)
1 -在Windows上,uid,gid,和shell是无用的,因为上面看到的
os.userInfo()调用uv_os_get_passwd,返回实际当前有效用户,无论环境变量是什么.
uv_os_get_passwd获取当前有效uid(不是真实uid)的密码文件条目的子集.填充的数据包括用户名,euid,gid,shell和主目录.在非Windows系统上,所有数据都来自getpwuid_r(3).在Windows上,uid和gid设置为-1并且没有任何意义,shell为NULL.