CNode

linux下用debug方法调试的疑问(shell脚本问题)

问答
Xxing393939发布于10 年前最后回复10 年前1 回复4243 浏览0 收藏

用了debug模块后在linux中启动: DEBUG=mydebug:* node app.js

我想知道前面的DEBUG=mydebug:* 是表示什么意思呢?

好像也不是定义变量的意思,因为我执行: DEBUG=mydebug:* echo ${DEBUG} 是输出空

执行: DEBUG=mydebug:* && echo ${DEBUG} 是输出mydebug:*

查看回复

回复 (1)

F
flamingtop#1·10 年前

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),所以你看到了输出
参与回复
登录后即可参与回复。登录