강좌 & 팁
글 수 2,412
2014.04.27 10:55:20 (*.134.169.166)
40669
실행 프로그램에서 환경 변수를 가끔 다룬다.
보통 윈도우에서는 환경 변수를 셋팅할 수 있지만
필요하다면 환경 변수를 참조 하기도 하고
조작하기도 해야 한다.
여기서는
프로그램 실행시만 적용되도록 환경 변수를 조작하는 예를 들겠다.
현재 실행 중인 프로그램의 환경 변수를 읽는 것은 무척 간단하다.
다음과 같은 문장이면 된다.
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
--------------------------------------------------------------------------------