환경변수란

환경변수는 운영체제가 참조하는 변수입니다.
예를 들어 일반 사용자들이 가장 많이 사용하는 운영체제는 마이크로소프트의 Windows 시리즈 입니다.
그러나 이 Windows 시리즈는 그래피컬한 환경 즉 GUI 환경이지만 초기 모델은 DOS 환경이었습니다.
이 DOS 환경은 쉽게 생각하면 우리가 알고 있는 cmd(Command라고 쓰고 명령 프롬프트라 읽음) 환경이라고 보시면 됩니다.

 

 

리눅스도 그렇고 이런 CMD도 마찬가지지만 이런 텍스트 기반 환경은 모든 행동들을 명령어를 통해 이루어집니다.
예를 들어 현재 나의 위치(디렉터리 경로)를 c:\내문서 로 이동해라 라든지 현재 위치에 있는 notepad 프로그램을 실행해라 라든지 등이 그것입니다.
우리가 사용하는 Windows 도 보여지는 것은 그래피컬하지만 더블클릭 등으로 경로를 이동하면 내부적으로는 명령어들이 실행된다고 생각하면 조금 더 이해가 가실겁니다.
경로 이동의 경우 cd 명령어(change directory) 를 사용하는데 이러한 기본 명령어들은 기본적으로 내장되어 있는 내장 명령어 들입니다.

때문에 운영체제만 설치하면 기본적으로 명령어를 이용할 수 있습니다.

그러나 우리가 설치한 자바 플랫폼은 어떤식으로 실행해야 할까요?
플랫폼이라 하면 너무 방대하니 자바 개발을 하여 나온 .java 파일일 .class로 컴파일 하기위해 자바 컴파일러인 javac.exe를 실행하고 싶은경우를 생각하면 될 것 같습니다.
간단하게 cmd를 실행하고 javac 를 입력한 후 엔터를 눌러줍니다.

'javac'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는  배치 파일이 아닙니다. 라는 문구가 나타날 것입니다.
이는 javac라는 명령어를 운영체제가 찾을 수 없기 때문입니다. 이 때 설정하는 것이 환경변수 입니다.
환경변수, 특히 Path 변수에 자바 컴파일러(javac.exe)와 자바 인터프리터(java.exe)가 있는 bin 디렉터리를 잡아주게 되면 운영체제는 다음과 같이 행동합니다.

1. javac 입력 후 엔터를 누릅니다.
2. 운영체제는 javac 라는 내부 명령어가 있는지 검사합니다.
3. 없는 경우 Path 환경변수를 검색합니다.
4. Path에 설정된 경로들 (; 세미콜론으로 구분된)을 모두 검사합니다.
5. javac.exe를 발견하면 실행합니다.

그렇습니다. Path 변수는 운영체제가 외부 명령어를 검색할 위치를 저장할 수 있는 변수였던 것입니다.
물론 이런 환경변수가 없어도 외부 명령어를 실행할 수는 있습니다.
그러나 매번 해당 명령어 실행 파일이 있는 위치까지 경로를 이동해주어야 할 것입니다.

JAVA 환경변수 필요한 이유
JAVA_HOME 같은 환경변수의 경우는 나중에 JAVA EE 환경에서 개발할때 톰캣같은 WAS가 참조하는 환경변수입니다.
CLASSPATH의 경우는 자바 어플리케이션이 실행될 때 클래스로더가 참조하여 해당 위치에 있는 라이브러리 클래스들을 로드하기 위한 용도로 사용되는 변수이기도 합니다.

JavaEE 스펙을 구현한 WAS들은 당연히 JAVA SE를 기반으로 했기 때문에 JAVA SE 환경이 필요하며 WAS는 사용자가 JAVA를 어느 경로에 설치할지는 예측할 수 없습니다.
때문에 원하는 위치(윈도우의 경우 심지어는 D드라이브)에 설치할 것이고 대신에 환경변수를 잘 설정해 두는 것입니다.
블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,