linux下用debug方法调试的疑问(shell脚本问题)
用了debug模块后在linux中启动: DEBUG=mydebug:* node app.js
我想知道前面的DEBUG=mydebug:* 是表示什么意思呢?
好像也不是定义变量的意思,因为我执行: DEBUG=mydebug:* echo ${DEBUG} 是输出空
执行: DEBUG=mydebug:* && echo ${DEBUG} 是输出mydebug:*
1 回复
DEBUG=mydebug:* echo ${DEBUG}
上面这句的意思是
- 设置环境变量DEBUG为你要的值
- 把且只把这个环境变量传入后面跟进的process
- 因为 echo 引用DEBUG的时候,它期望DEBUG还在当前shell内,而这个语法并不在当前shell里设置DEBUG,所以输出为空
- 而DEBUG=xxx node app.js中的node是一个单独进程,所以DEBUG是存在的 (process.env)
- 如果把语句改成 DEBUG=hello sh -c ‘echo $DEBUG’ 这时候DEBUG被引用的时候,已经被传进心的‘sh’进程
DEBUG=mydebug:* && echo ${DEBUG}
上面这句的意思是
- 设置DEBUG环境变量,并且对当前shell 进程是可见的
- 如果设置成功,就执行echo,因为echo执行的时候DEBUG已经存在了(在当前shell),所以你看到了输出