실행 프로그램에서 환경 변수를 가끔 다룬다. 

보통 윈도우에서는 환경 변수를 셋팅할 수 있지만 

필요하다면 환경 변수를 참조 하기도 하고 

조작하기도 해야 한다. 

여기서는 

프로그램 실행시만 적용되도록 환경 변수를 조작하는 예를 들겠다. 

현재 실행 중인 프로그램의 환경 변수를 읽는 것은 무척 간단하다.

다음과 같은 문장이면 된다. 

var env = process.env;

이때 반환되는 것은 환경 변수 객체가 된다. 

그래서 이 것을 표출하려면 다음과 같은 형태로 표출하면 된다. 

for( var i in env )
{
console.log(i+' = '+env[i]); 
}

만약 환경 변수를 수정하려면 다음과 같이 하면된다. 

env['Path'] = 'C:/TEST;'+env['Path'];
이 예는 환경 변수 Path 값을 수정하는 것이다. 

이 변수들은 문자열이므로 가공은 문자열 처리를 하면 된다. 

만약 새로이 시작되는 프로그램에 환경 변수를 추가 하여 적용하려면 다음과 같은 형태로 하면된다. 

child = execFile(filePath,{ "env" : env }, function(error,stdout,stderr) { 
 }); 

이것은 프로그램 실행 강좌에 추가 한 것이다. 

다음 소스는 환경 변수를 콘솔에 표출하고 

ckw.exe 를 실행할때 환경에 Path 를 수정하여 실행한 예이다. 

최종적으로 ckw.exe 프로그램에서 env 명령을 쳐서 환경 변수값 중 

Path 가 변경되어 있는 것을 확인 할 수 있다. 

이 프로그램의 완전한 소스는 다음과 같다. 

----[package.json]--------------------------------------------------------------
{
"name": "env",
"main": "index.html",
"window": 
{
"toolbar" : false
}
}
--------------------------------------------------------------------------------

----[index.html]----------------------------------------------------------------
<html>
<head>
<meta http-equiv="content-Type" content="text/html; charset=utf-8" /> 
<title>프로그램 환경 env</title>
<script type="text/javascript" src="js/jquery-2.0.3.min.js"></script>
</head>
<body>
<h1>프로그램 환경 env</h1>
<script type="text/javascript" src="main.js"></script>  
</body>
</html>
--------------------------------------------------------------------------------

----[main.js]----------------------------------------------------------------
$(function(){

var gui = require('nw.gui');
var win = gui.Window.get();

win.showDevTools();
console.log( "윈도우 프로그램 시작" );

var env = process.env;
for( var i in env )
{
console.log(i+' = '+env[i]); 
}
env['Path'] = 'C:/TEST;'+env['Path'];
var execFile = require ('child_process').execFile;
var filePath = "c:/Windows/System32/ckw.exe";
var child;

child = execFile(filePath,{ "env" : env }, function(error,stdout,stderr) { 
if (error) {
 console.log(error.stack); 
 console.log('Error code: '+ error.code); 
 console.log('Signal received: '+ 
error.signal);
 } 
console.log('Child Process stdout: '+ stdout);
console.log('Child Process stderr: '+ stderr);
 }); 

child.on('exit', function (code) { 
console.log('Child process exited '+'with exit code '+ code);
});
});
--------------------------------------------------------------------------------

실행 결과 디버그 콘솔창에는 다음과 같이 나타날 것이다. 

----[console]----------------------------------------------------------------
윈도우 프로그램 시작 
ALLUSERSPROFILE = C:\ProgramData 
APPDATA = C:\Users\frog\AppData\Roaming 
CHROME_ALLOCATOR = TCMALLOC 
CHROME_BREAKPAD_PIPE_NAME = \\.\pipe\ChromeCrashServices 
CommonProgramFiles = C:\Program Files\Common Files 
COMPUTERNAME = WIN-GJA8CLHKBTV 
ComSpec = C:\Windows\system32\cmd.exe 
FP_NO_HOST_CHECK = NO 
HOMEDRIVE = C: 
HOMEPATH = \Users\frog 
LOCALAPPDATA = C:\Users\frog\AppData\Local 
LOGONSERVER = \\WIN-GJA8CLHKBTV 
NUMBER_OF_PROCESSORS = 1 
OS = Windows_NT 
Path = C:\Python27;C:\GnuWin32\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Users\frog\AppData\Roaming\npm 
PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 
PROCESSOR_ARCHITECTURE = x86 
PROCESSOR_IDENTIFIER = x86 Family 6 Model 42 Stepping 7, GenuineIntel 
PROCESSOR_LEVEL = 6 
PROCESSOR_REVISION = 2a07 
ProgramData = C:\ProgramData 
ProgramFiles = C:\Program Files 
PROMPT = $P$G 
PSModulePath = C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ 
PUBLIC = C:\Users\Public 
SESSIONNAME = Console 
SystemDrive = C: 
SystemRoot = C:\Windows 
TEMP = C:\Users\frog\AppData\Local\Temp 
TMP = C:\Users\frog\AppData\Local\Temp 
USERDOMAIN = WIN-GJA8CLHKBTV 
USERNAME = frog 
USERPROFILE = C:\Users\frog 
VS110COMNTOOLS = C:\Program Files\Microsoft Visual Studio 11.0\Common7\Tools\ 
windir = C:\Windows 
--------------------------------------------------------------------------------