将环境变量传递给进程

Max*_*kyi 3 bash shell node.js

我刚刚遇到了这个代码片段:

$ DEVELOPMENT=1 node dev-mode.js
Run Code Online (Sandbox Code Playgroud)

这一行运行 node.js 程序并设置环境变量DEVELOPMENT。我不明白设置 env 变量的机制是什么?这是有效的语法:

$ [var1=value1 var2=value2] [process_name process_params] ?
Run Code Online (Sandbox Code Playgroud)

Ini*_*ian 5

有两种方法可以从您当前的 shell 一个正在运行的程序中设置传递变量,

使用export内置语法作为

$ export MYVALUE=5
$ echo "MYVALUE is $MYVALUE"
MYVALUE is 5
Run Code Online (Sandbox Code Playgroud)

此语法允许变量在您正在调用的所有后续子 shell 中的当前 shell 中生效(用于命令替换或进程替换等),并且即使在子 shell 终止后,该变量也保持活动状态。

(或)如问题中所问,如果您直接将其发送到命令

$ MYVALUE=5 bash -c 'echo "MYVALUE is $MYVALUE"'
MYVALUE is 5
Run Code Online (Sandbox Code Playgroud)

该值仅传递给子外壳(以 开头的子外壳bash -c)并且一旦退出就对父外壳没有影响。您现在可以MYVALUE从上面的语法中观察到,它将是空的。

$ echo $MYVALUE
$
Run Code Online (Sandbox Code Playgroud)

希望这能回答你的问题。