2017-06-07 2 views
3

Wie Sie unten sehen können, setze ich eine Umgebungsvariable FOO, aber wenn ich console.log in der nächsten Zeile ausführen, ist es undefined. Wenn ich es in der gleichen Zeile setze, in der ich console.log ausführe, ist es vorhanden. Warum ist das Verhalten als solches?Warum liest Node die env var der aktuellen Shell nicht?

$ FOO="123" 
$ echo $FOO 
123 
$ node -e "console.log(process.env.FOO)" 
undefined 
$ FOO="123" node -e "console.log(process.env.FOO)" 
123 

Node-Version: 6.6.0

+1

Sie müssen verwenden 'export FOO =" 123 "' –

Antwort

5

Wenn Sie die Umgebungsvariable für die aktuelle Terminal-Sitzung festlegen möchten, müssen Sie EXPORT

So verwenden, wird dieser Code arbeiten

export FOO=123 
node -e "console.log(process.env.FOO)" 
123 

EXPORT macht die Zuweisung für Unterprozesse sichtbar. Überprüfen Sie diese thread für weitere Details

+0

Vielen Dank! Der Code funktioniert großartig, aber für zukünftige Leser wäre es großartig, wenn Sie erklären könnten, warum dies getan werden muss. –

+1

Ja, ich kann, aber ich denke, der Link von der Gemeinschaft zur Verfügung gestellt ([Was macht "Export" in Shell-Programmierung tun?] (Https://stackoverflow.com/questions/7411455/what-does-export-do-in- Shell-Programmierung)) ist es besser als ich es kann. – ThomasThiebaud

+0

Ich bekomme das, aber ich musste den ganzen Weg bis zum Ende auf diesem Thread scrollen, um die Erklärung zu finden :( –

Verwandte Themen