[英]Passing environment variables to a process
我剛剛看到這段代碼:
$ DEVELOPMENT=1 node dev-mode.js
該行運行node.js程序並設置環境變量DEVELOPMENT
。 我不明白用什么機制來設置env變量? 這是有效的語法:
$ [var1=value1 var2=value2] [process_name process_params] ?
有兩種方法可以將當前shell中的傳遞變量設置為正在運行的程序,
使用帶有語法的內置export
$ export MYVALUE=5
$ echo "MYVALUE is $MYVALUE"
MYVALUE is 5
此語法允許變量在您調用的所有后續子shell中的當前shell中生效(用於命令替換或進程替換等),並且即使在子shell終止后變量也保持活動狀態。
(或)如問題所述,如果你直接將其發送給命令
$ MYVALUE=5 bash -c 'echo "MYVALUE is $MYVALUE"'
MYVALUE is 5
該值僅傳遞給子shell(以bash -c
開頭的那個),並且一旦退出就不會對父shell產生影響。 您現在可以從上面的語法中觀察MYVALUE
,它將為空。
$ echo $MYVALUE
$
希望這能回答你的問題。
這個例子應該證明:
X=0; Y=1; #set X and Y
#set X, Y for the child and have it expand and print those vars
X=42 Y=43 sh -c 'echo $X $Y'
#print the same vars in the parent
echo $X $Y
該
var0=val0 var1=val1... command
語法使得它就像在命令之前的變量列表被臨時分配了相應的值並且變量一樣被導出
export var0
命令運行后,變量列表中的變量將恢復其原始值和導出狀態(=它們是否自動傳播到子進程)。
打印示例
42 43
0 1
是的,這是一個有效的語法,它在man bash
Simple Commands
部分中描述:
一個簡單的命令是一系列可選的變量賦值,后跟空格分隔的單詞和重定向,並由控制操作符終止。 第一個單詞指定要執行的命令,並作為參數零傳遞。 其余的單詞作為參數傳遞給調用的命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.