본문 바로가기

CS

환경 변수는 왜 설정하는가?

반응형

"자바를 처음 배울때 'JAVA_HOME'을 적는 이유는 뭐지? 환경변수는 뭐고 자바를 설치하고 왜 환경변수라는 것을 설정하는 건지는 왜 안알려줘?"

 

자바를 처음 배우면서 들었던 의문이었지만 아무도 그 의문에 대한 답을 정확히 해주지 않아서 이번에는 환경변수는 무엇이고 자바설치후 환경변수를 설정하는 이유에 대해 정리해보겠습니다. 

 

환경변수란?

환경변수를 설정하는 이 화면은 개발을 하다보면 자주 만나게 되는 화면일 것입니다. 

 

첫번째 궁금한 점은 "ooo에 대한 사용자 변수 / 시스템 변수" 에 대한 것인데 이 두가지는 어떻게 다른것이고 왜 따로 따로 환경변수를 설정해야 하는지에 대해 먼저 정리하겠습니다 .

 

환경변수는 소스코드를 작성할때 멤버변수와 역할이 같습니다.  

 

자바에서는 int, string, double ... 등 여러가지 type의 변수를 설정 합니다. 

예를 들어 int apple; 이라는 소스 코드에서 apple은 변수가 됩니다. 

 

환경변수도 위의 예시와 마찬가지로 하나의 변수입니다. 

단, apple 처럼 자바내에서 선언한 변수가 아닌 'OS레벨의 변수' 입니다. 

 

다시 질문으로 돌아와  "ooo에 대한 사용자 변수 / 시스템 변수" 은 어떻게 다른지 정리하자면

 

window를 사용하는 경우 하나의 PC에서 다수의 USER를 둘수 있습니다. 환경변수를 설정할 때 어떤 유저에서 환경변수를 설정할지 정하는 곳이 'ooo에 대한 사용자 변수' 에 해당 되고 비유 하자면 지역 변수에 해당된다고 할 수 있습니다 .

 

'시스템 변수'는 'OS레벨의 변수' 즉, 전역 변수라고 생각 하시면 될것 같습니다. 다시말해 현재 PC에 등록된 모든 유저들 모두에게 동일하게 환경변수가 설정된다고 말할 수 있습니다. 

 

PATH 는 왜 따로 관리하는 거지?

 

"ooo에 대한 사용자 변수 / 시스템 변수" 둘다 'PATH' 라는 곳이 존재 합니다. 대게 개발자의 경우 이곳에 JAVA_HOME, CATALINA_HOME ...등 다양한 환경변수를 설정해 놓습니다. 

 

일반적으로 터미널을 통해 내가 실행하고자 하는 프로그램이 있다면 그 프로그램을 실행하기 위해 그 폴더 내로 이동 해야 합니다. 하지만 PATH내에 실행하고자 하는 프로그램의 경로를 정해 놓으면 어디서든 그 프로그램을 실행 할 수 있습니다 .

 

여기서 우리는 '자바를 설치하고 나서 환경변수를 설정하는 이유'를 알 수 있습니다. 

 

PATH에 자바의 실행 파일의 경로를 설정한다면 어디서든 자바를 실행할 수 있게 되기 때문입니다. 

 

 

환경 변수를 왜 설정 해야 하지?

 

마지막으로 환경변수를 설정하는 이유에 대해 정리해보고 마무리 하겠습니다. 

 

윈도우에서는 'C:\Windows\System32' 폴더 내에는 'notepad.exe'라는 메모장 실행파일 있습니다. 

 

하나의 상황을 예시 들어 보겠습니다.

 

A : '메모장이 'C:\Windows\System32' 경로에 있다. 

B : '메모장이 'D:\Windows\System32' 경로에 있다. 

C : '메모장이 'E:\Windows\System32_ss' 경로에 있다. 

 

A는 C 드라이브에 B는 D드라이브에 C는 폴더명이 다르다고 가정해 보면 환경변수를 설정하지 않으면 각각의 PC에서 메모장 실행 파일을 찾지 못하고 결국 실행되지 못하는 일이 발생하게 됩니다. 

 

때문에 '시스템 환경변수 편집' 에서 PATH 에 %SystemRoot%\system32에 형태로 

SystemRoot라는 변수에 각각 A, B, C가 각각 가지고 있는 메모장 설치 경로를 대입하게 되면 모든 PC에서 메모장을 사용할 수 있게 됩니다. 

 

반응형

'CS' 카테고리의 다른 글

MIME 의 개념과 사용 목적  (1) 2022.01.12
WEB 서버와 WAS의 차이  (0) 2022.01.12
Base64 Encoding 이란?  (1) 2022.01.07
도메인이란?  (0) 2022.01.06
컴파일러와 인터프리터의 차이  (0) 2022.01.04