세팅

[설정] - 환경변수와 사용자 변수 ?

algml0703 2025. 1. 6. 21:55
반응형

  환경변수와 사용자변수

새로운 프로그램을 설치해주는 경우 이에 맞추어 환경 변수와 사용자 변수 설정을 추가해주어야 하는 경우가 있다. 예를 들면 자바를 설치 시 JAVA_HOME 이라는 환경변수를 함께 추가해주는 경우가 그러하다. 그 동안 그냥 구글에 검색 시 그냥 블로그에서 시키는 대로 생각없이 따라하면서 설치하고 환경변수를 추가해주었는데 왜 해주는 것인지 한 번 알아보았다.

환경변수 (System Variables)

환경변수는 시스템 전체에 적용되는 것으로, 모든 사용자 계정과 프로그램에 환경변수로 설정된 것을 참조할 수 있다. 기본적인 시스템 설정과 관련한 경로, 파일 위치, 구성 정보 등을 저장한다. 일반적으로 운영체제 및 모든 사용자에게 공통적으로 적용되어야 할 필요가 있는 경우에 환경변수로 설정하여 준다. 

 

사용자변수 (User Variables)

사용자 변수는 특정 사용자 계정에서만 사용하려는 경우에 적용하는 설정이다. 개별 사용자의 환경 설정이나 프로그램 실행에 필요한 정보를 설정해두는 것이다.

기본적으로 사용자 변수가 환경변수보다 우선 순위가 높다. 때문에 사용자 계정의 Path 변수에 특정 경로를 추가하면 이는 시스템 변수의 Path 보다 먼저 참조된다. 

** Path: 실행 파일 등에 대한 경로를 설정하여 어느 위치에서든 해당 실행 파일을 실행할 수 있도록 설정하여 주는 파일 경로이다.

Window 환경에서는 설정 창에서 환경 변수를 검색하여 환경 변수나 사용자 변수에 대한 설정을 해주는 것이 가능하며, Mac 을 사용하는 경우에는 시스템 변수의 경우 /etc/paths  파일에, 사용자 변수의 경우 ~/.bash_profile을 통해 확인 또는 설정할 수 있다. Mac의 경우에는 셸 세션에서 직접 설정된 변수의 우선 순위가 가장 높고, 그 다음으로 ~/.zshrc 나 ~/.bash_profile을 통해 설정된 사용자 변수, 그 다음으로 etc/paths에 설정된 환경변수 순으로 우선 순위를 가진다. 

현재 셸 세션에서 설정된 변수란 터미널을 실행시키고, export JAVA_HOME=[경로] 와 같이 해당 세션에서 명령어를 통해 바로 설정한 변수를 의미한다. 아래를 이미지를 보면 처음에 JAVA_HOME 확인 시에는 사용자 변수로 설정되어 있는 값을 가져오지만, export JAVA_HOME = [새로운경로] 를 설정해준 후 JAVA_HOME을 확인한 이후에는 새롭게 설정한 JAVA_HOME의 값이 나오는 것을 확인할 수 있다. 하지만 이는 해당 창의 터미널에서만 유효하면 새로운 터미널 창을 실행시켜 JAVA_HOME을 확인해보면 처음과 같이 사용자 변수로 설정되어 있는 값을 가져온다.

** 해당 세션에서 적용되는 변수 설정해주는 명령어

export var=[경로]
ex) JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home"

// 해당 세션 뿐만 아니라 사용자변수 설정에 영구적으로 반영하려는 경우는 아래의 명령어
source ~/.bash_profile

** Path에 설정되어 있는 경로 확인하는 명령어

echo $PATH | tr ':' '\n'

 

** 셸 (Shell) : 사용자와 컴퓨터 운영체제 간의 인터페이스를 제공하는 것으로, 명령어를 처리하는 프로그램이라 할 수 있다. 사용자가 명령어를 입력하면 Shell이 해당 명령어를 운영체제에 전달하고 실행 결과를 사용자에게 반환하여 준다. 그 중에서도 Bash와 Zsh는 Mac이나 Linux와 같은 유닉스 계열 운영체제에서 주로 사용되는 셸의 종류이다.  터미널에서 echo $SHELL 실행 시  /bin/bash가 나오는 경우, Bash를, /bin/zsh가 나오는 경우 Zsh를 사용하고 있는 것임을 알 수 있다.

** JAVA_HOME 등과 같이 특정 변수명으로 설정해주는 것과, Path에 경로를 추가해주는 것의 차이?

우선 JAVA_HOME과 같이 변수에 경로를 설정해 준 것은 Maven이나, Gradle 과 같은 툴 실행 시 사용될 JDK의 경로를 설정해준 것이라 할 수 있다. ex) JAVA_HOME : C:\Program Files\jdk-21.0.5

Path에 추가해주는 것들은 CLI를 통해 프로그램 실행 시 전역에서 해당 명령어가 실행 가능하도록 해주는 설정이다. 때문에 일반적으로 실행 스크립트가 있는 bin 폴더를 기준으로 Path를 추가해준다. ex) %JAVA_HOME%\bin

-- %JAVA_HOME%과 같이 %[변수명]% 을 통해 기존에 변수에 설정된 값을 가져올 수 있다. 즉 %JAVA_HOME%\bin 은 C:\Program Files\jdk-21.0.5\bin 과 같다.

반응형