환경 변수(environment variable)란? 개발 환경 구성에 필수 지식

환경 변수(environment variable)란?

환경 변수(environment variable)는 컴퓨터 운영체제에서 여러 프로그램들이 동작할 때 필요한 정보를 저장 해두는 변수다. 자바(Java) 로 프로그래밍을 해보았다면 처음 JDK(자바를 개발하기 위한 kit 로 Java Development Kit 의 약자이다.) 를 설치하고 환경 변수를 등록하는 과정을 겪게 된다.

환경 변수에 등록 하게 되는 값은 주로 파일 혹은 디렉토리 경로(Path)다. 위에 언급한 JDK(예: OpenJDK)를 설치하고 해당 파일이 설치된 경로들을 설정해 주는 과정이 있다.

그 외에도 시스템 언어 설정, 사용자의 정보 등도 환경 변수에 저장이 된다.

윈도우(Windows) 환경 에서 환경 변수 확인하기

윈도우를 사용 중에 있다면 Windows 11 기준 시작 메뉴(키보드 windows 키) → 환경 변수를 입력하여 쉽게 환경 변수 편집 화면을 열 수 있다.

시작 메뉴, 시스템 환경 변수 편집 검색

해당 앱을 열면 시스템 속성 창이 출력 되고 아래 환경 변수(N) 단추를 누르면 현재 설정되어 있는 환경 변수들과 이를 편집할 수 있는 화면이 출력 된다.

사용자 변수

환경 변수 창의 위에 위치한 사용자 변수는 현재 사용자에게 적용되는 환경 변수다. 쉽게 설명하자면 로그인한 유저에게만 영향을 미치도록 설정하는 것이다.

시스템 변수

시스템 변수는 사용자 변수와는 달리 시스템 전체에 적용 돼 PC를 이용하는 모든 유저가 해당 설정을 공유하게 된다.

보통 일반적인 상황에선 시스템 변수에 JDK, Python 등 설치한 프로그램을 모든 유저가 사용할 수 있도록 설정하곤 하지만, 서버 등에서 용도와 아니면 접속 유저에 따라 서로 다른 설정을 지니게 하고 싶다면 사용자 변수에 지정하면 된다.

둘 모두 사용 자체에 문제는 없으며 목적에 따라 원하는 곳에 환경 변수를 설정하면 된다.

JDK, Python 등을 환경 변수에 등록하는 이유

환경 변수에 사용할 프로그램을 등록해 두면 연관 되어 사용되는 프로그램들이 자동으로 해당 변수를 공유하여 사용하게 된다. 그리고 기본적으로 명령줄 프로그램(CMD) 는 환경 변수에 설정 된 프로그램을 이용하게 된다.

물론 IDE 도구 등에선 직접 설정을 지원할 경우 환경 변수 설정 없이도 JDK, Python 등을 이용할 수 있다. 자바 개발에 자주 이용되는 이클립스(Eclipse)의 경우 여러 JDK 를 등록하고 프로젝트 별로 설정해 사용도 가능하다. (Eclipse JDK 설정법)

결과적으로, 직접 설정을 제공하지 않는 이상 지원하는 프로그램들이 환경 변수에 등록 되어 있어야 동작하는 경우 제대로 등록한 후에 사용해야 한다.

다른 방법으로 윈도우(Windows) 에서 환경 변수 설정 하기

CMD 에서 설정 하는 방법

윈도우는 ‘win + R’ 키를 누르고 cmd 를 입력해 실행한 Windows CMD(Command Prompt) 에서도 환경 변수를 설정할 수 있다. 환경 변수는 일시적, 영구적 적용 방법이 둘 다 존재 한다. 다음은 일시적으로 환경 변수를 적용하는 방법이다.

일시적으로 환경 변수 설정
set JAVA_HOME=C:\Program Files\Java\jdk-17
set PATH=%JAVA_HOME%\bin;%PATH%

set 변수명=경로
cmd

이를 응용하면 특정 JDK 경로 혹은 버전이 필요한 경우 일시적으로 환경 변수를 부여한 다음 테스트가 가능하다.

예를 들어 구 버전의 JDK 에서만 동작하는 BAT 파일(Windows 운영체제에서 사용되는 배치 스크립트 파일이다.)을 등록하고 싶은 경우 위에 set 명령어로 JAVA_HOME 을 등록하는 과정을 작성해 주면 된다.

영구적으로 환경 변수 설정은 set 부분을 setx 명령어로 변경하고 = 부분을 제외한다.

영구적으로 환경 변수 설정
setx JAVA_HOME "C:\Program Files\Java\jdk-17"
setx PATH "%JAVA_HOME%\bin;%PATH%"

set 변수명 "경로"
cmd

적용 된 환경 변수는 뒤의 경로 없이 Set 만 입력하여 확인이 가능하다.

Set 수행 결과

특정 환경 변수의 경로만 확인하고 싶다면 echo %변수명% 으로 확인이 가능하다.

echo 수행 결과

PowerShell 에서 설정 하는 방법

Windows PowerShell 에서도 환경 변수 설정이 가능하다. PowerShell 또한 임시, 영구 설정 모두 가능한데 방법은 다음과 같다.

일시적으로 환경 변수 설정
$env:JAVA_HOME = "C:\Program Files\Java\jdk-17"
$env:PATH = "$env:JAVA_HOME\bin;$env:PATH"
PowerShell

이 또한 CMD 와 같이 일시적으로만 적용 되므로 만약 .ps1 파일을 작성 할 때 응용할 수 있다.

영구적으로 환경 변수 설정
[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk-17", "Machine")
[System.Environment]::SetEnvironmentVariable("PATH", "$env:JAVA_HOME\bin;$env:PATH", "Machine")
PowerShell

영구적으로 환경 변수를 설정할 때 Machine 부분은 시스템 변수로 설정하는 것이며 User 사용 시 사용자 변수로 설정이 되다.

PowerShell, CMD 모두 환경 설정 자체는 동일하게 가능하지만, PowerShell 은 특정 스코프(사용자, 시스템)에 적용이 가능하고 CMD 는 문자열을 그대로 이용하면서 길이 제한, 복잡한 논리 등을 적용하는데 한계가 있다.

PowerShell 에서 환경 변수를 확인 하고 싶으면 Get-ChildItem Env: 명령어를 사용하면 된다.

Get-ChildItem Env: 명령어 수행 결과

이 중 특정 환경 변수를 확인하고 싶을 땐 echo $env:변수명 을 입력하면 된다.

echo $env:변수명 수행 결과
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
목차
위로 스크롤