[Windows] 환경 변수(로컬, 사용자 및 시스템 변수)의 모든 것, 이것으로 고민 해결!
Windows 환경 변수는 시스템과 사용자 환경에서 프로그램이나 명령어가 실행될 때 사용되는 값을 저장하는데 사용됩니다. 이러한 환경 변수들은 시스템 설정이나 특정 프로그램의 실행에 필요한 정보를 저장하고 전달하는 역할을 합니다. 주요한 역할은 다음과 같습니다.
- 시스템 구성 관리:
환경 변수는 시스템의 구성 요소를 관리하고 제어하는 데 사용됩니다. 예를 들어, 시스템 경로, 임시 파일 위치, 로그 파일 디렉토리 등을 설정할 수 있습니다. - 프로그램 설정: 환경 변수는 특정 프로그램이나 응용 프로그램의 설정을 저장하는 데 사용됩니다. 예를 들어, 자주 사용하는 프로그램이나 개발 도구의 경로를 지정하거나, 프로그램의 설정값을 저장할 수 있습니다.
- 시스템 동작 제어: 환경 변수를 사용하여 시스템 동작을 제어할 수 있습니다. 예를 들어, 시스템의 언어 설정, 시간대 설정 등을 변경할 수 있습니다.
Batch파일에서 환경 변수(사용자 변수 및 시스템 변수)를 설정하는 방법을 설명하기에 앞서 수작업으로 등록하는 방법을 알아보겠습니다. “시스템 및 보안” > “시스템” > “고급 시스템 설정”을 클릭하면 “시스템 속성” 창이 나타납니다.
“고급” 탭에서 “환경 변수” 버튼을 클릭하면 아래와 같이 사용자 변수와 시스템 변수를 등록할 수 있는 “환경 변수” 창이 나타납니다. 일반적으로 시스템 변수가 사용자 변수보다 우선합니다. 즉, 동일한 이름의 변수가 사용자 변수와 시스템 변수에 모두 등록되어 있는 경우, 시스템 변수의 값이 우선적으로 적용됩니다. “새로 만들기” 버튼을 클릭하면 변수 이름과 변수 값을 입력하는 창이 나옵니다. 환경 변수에 디렉터리나 파일을 설정할 경우에는 찾아보기를 이용하여 쉽게 환경 변수를 설정할 수 있습니다.
- 사용자 변수
- 특정 사용자에게만 적용되는 환경 변수입니다. 사용자가 로그인한 시스템에서만 해당 변수가 유효합니다.
- 사용자가 직접 추가, 수정 및 삭제할 수 있습니다. 사용자가 자신의 환경을 커스터마이징할 수 있습니다.
- 시스템 변수
- 전체 시스템에 적용되는 환경 변수입니다. 시스템의 모든 사용자에게 적용되며, 시스템 전반에 영향을 미칩니다.
- 일반적으로 관리자 또는 시스템 관리자만이 시스템 변수를 수정할 수 있습니다. 시스템 전반에 영향을 미치므로 신중하게 관리해야 합니다.
한 대의 PC에서 두 가지 버전의 eclipse와 weblogic를 함께 사용하면서 고민이 시작되었습니다. PC 두 대를 사용하는 것도 번거롭고, 실행 버전을 바꿀 때마다 시스템 환경 변수를 변경하는 것도 번거롭고 해서 이리저리 고민해 보다가 setx라는 명령어를 발견했습니다. 보통 Batch 파일의 환경변수를 설정하는 명령어로 set을 사용하지 setx를 사용한 적이 없었습니다. 두 명령어의 차이점을 살짝 알아봐야겠습니다.
- set
– set 명령어로 설정한 환경 변수는 현재 사용 중인 세션(로컬)에서만 유효합니다. 세션이 종료되면 환경 변수가 제거됩니다.
– 명령어 구문: set JAVA_HOME=”C:\eclipse\app\jdk1.8.0_301″ - setx
– setx 명령어로 설정한 환경 변수는 영구적으로 시스템((HKEY_LOCAL_MACHINE, /M 옵션 지정) 또는 사용자(HKEY_LOCAL_MACHINE)의 환경 변수로 저장됩니다. 따라서 재부팅 후에도 유지됩니다.
– 중요 사항: “Variables set with SETX variables are available in future command windows only, not in the current command window.”
– 명령어 구분: setx /M JAVA_HOME “C:\eclipse\app\jdk1.8.0_301”
setx명령어의 중요 사항을 읽어보시면 알겠지만, 아래와 같이 변경된 시스템 환경 변수의 값이 현재의 command window에서는 적용되지 않습니다.
Microsoft Windows [Version 10.0.19045.3930]
(c) Microsoft Corporation. All rights reserved.
C:\>echo %JAVA_HOME%
C:\eclipse\app\jdk1.8.0_301
C:\>setx /M JAVA_HOME "C:\eclipse-luna\app\jdk1.7.0_80\"
성공: 지정한 값을 저장했습니다.
C:\>echo %JAVA_HOME%
C:\eclipse\app\jdk1.8.0_301
새로운 명령 프롤프트를 실행한 후 JAVA_HOME 설정 값을 출력하면 변경된 것을 확인할 수 있습니다.
Microsoft Windows [Version 10.0.19045.3930] (c) Microsoft Corporation. All rights reserved. C:\>echo %JAVA_HOME% C:\eclipse-luna\app\jdk1.7.0_80"
Batch 파일에서 set과 setx를 함께 사용해야 현재 세션과 다음 세션에서도 변경된 값을 적용할 수 있습니다.
Microsoft Windows [Version 10.0.19045.3930] (c) Microsoft Corporation. All rights reserved. C:\>echo %JAVA_HOME% C:\eclipse-luna\app\jdk1.7.0_80" C:\>setx /M JAVA_HOME "C:\eclipse\app\jdk1.8.0_301" 성공: 지정한 값을 저장했습니다. C:\>set JAVA_HOME="C:\eclipse\app\jdk1.8.0_301" C:\>echo %JAVA_HOME% "C:\eclipse\app\jdk1.8.0_301"
고민이 해결되었습니다. 저처럼 두 가지 버전의 eclipse와 weblogic을 운영하시는 분들에게 많은 도움이 되길 바랍니다.