开发者社区> 问答> 正文

什么是环境变量?有什么作用?

环境变量问题 这是我的举例,到底什么是环境变量,有什么作用,在mac/linux系统上有什么区别?我查过一些资料,可是还是不太懂。在我学习node的过程中,经常有人跟我提到这个东西,可是我并不清楚它到底是什么。

展开
收起
a123456678 2016-06-23 15:54:45 2375 0
2 条回答
写回答
取消 提交回答
  • 一个程序通过命令进入工作台的时候,需要找到这个程序的绝对路径;
    比如:
    cmd 下发 node 就进入了node的编译环境;但是系统是怎么快速找到node程序。就是通过环境变量的path找到的

    2019-07-17 19:46:29
    赞同 展开评论 打赏
  • 环境变量简单来说就是给系统和应用程序设置一些参数,具体一个环境变量包括

    名称
    参数值
    这样当系统启动一个应用程序的时候,这些参数就默认设置好了,在linux下你可以通过,修改/etc/profile、~/.profile等文件来设置系统全局的环境变量,如:

    # other settings
    # ...
    export my_var 'hello world!';
    然后就可以通过下面代码段,在你的程序运行期间获得这个值
    
    #include <stdlib.h>
    #include <stdio.h>
    
    int main() {
        const char * my_var = getenv("my_var");
        printf("my_var = %s\n", my_var);
        return 0;
    }
    当然你说的nodejs程序中可以这样获取环境变量:
    
    console.log(process.env)
    会输出类似这样:
    
    {
        PATH: '/usr/local/bin:/usr/bin',
        JAVAHOME: '/usr/lib/Java',
        ...
    }
    执行子进程的时候,也可以指定子进程自己的环境变量,如:
    
    var exec = require('child_process').exec;
    
    var child = exec('cat *.js', {
        PATH: '/usr/bin',
        MY_VAR: 'hello world!'
    }, function (error, stdout, stderr) {
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
          console.log('exec error: ' + error);
        }
    });

    通过child_process.exec函数的第二个参数,传递一个Object去覆盖默认的环境变量

    这是我的一些认识和见解,希望对你有帮助,具体更深的我也讲不来,呵呵!

    2019-07-17 19:46:29
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载