글 작성자: 개발자 올라프

개요

  • 자바의 정석(기초편)중 '자바 개발도구(JDK) 설정하기' 부분에서 PATH(환경변수) 설정에 어려움을 겪었다. PATH가 무엇인지 보다 정확히 이해하기 위해서 맥에서 PATH를 설정하는 법을 정리해보자.

 


 

PATH란 무엇인가?

PATH(환경변수)는 컴퓨터 운영체계에서 특정한 파일이 있는 위치를 나타내는 경로이며 어떤 디렉토리에서도 실행할 수 있는 파일들을 찾기 위한 경로를 미리 설정해두는 데 쓰인다.

 


 

언제 쓰이는가?

터미널에서 Hello.java파일을 사용하기 위해 /Library/Jdk1.8/work 디렉토리에서 작업을 하고 있다고 해보자.

Hello.java(소스파일)를 Hello.class(클래스파일)로 컴파일하는 작업을 하기 위해 javac.exe(자바 컴파일러)를 실행시켜야 한다면 터미널에 아래와 같이 입력할 것이다.

javac Hello.java

이 때 javac가 실행되지 않는 오류를 보게 된다면 javac.exe가 현재 디렉토리에 없고 다른 디렉토리에 있기 때문이다. 따라서 javac 명령을 주어도 컴퓨터는 javac.exe의 위치를 몰라서 실행시킬 수 없다는 에러메시지를 보여주는 것이다.

 

컴퓨터가 알아서 모든 폴더들을 확인하여 javac.exe를 실행시켜 준다면 좋겠지만, 수천 개나 되는 폴더를 다 확인하려면 시간이 오래 걸리기 때문에 아예 찾기를 포기하는 것이다(또한 같은 이름을 가진 다른 파일이 잘못 실행되는 위험을 방지하기 위한 목적이 있기도 하다).

 

이때 특정 디렉토리 몇 개만 간단히 확인하라고 지정해 주는 것이 바로 PATH이다.

터미널에서 javac.exe을 실행시킬 때 현재 디렉토리에 없으면 PATH에 등록된 제일 상단 디렉토리부터 하나씩 javac.exe가 있는지 찾아본다.

이 javac.exe가 있는 library/Jdk1.8/bin 디렉토리 경로가 맥의 PATH에 지정되어 있으면 어느 디렉토리에서도 경로 없이 javac만을 입력 함으로써 이 프로그램을 실행시킬 수 있다.

 

(참고)

원래 다른 폴더에 있는 javac.exe를 실행 시키기 위해서는 javac.exe가 위치한 경로를 일일이 javac앞에 입력해 주어야 한다. 자주 사용하는 프로그램이라면 매 번 프로그램을 사용할 때마다 해당 경로를 입력하는 번거로움이 생긴다.

Library/Jdk1.8/bin/javac Hello.java

 


 

macOS에서 JDK PATH를 설정해보자

1) 터미널 실행 후 cd 명령어에 본인의 JDK 디렉토리 절대경로를 입력한다.

cd /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/bin/

(현재 터미널 상으로 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/bin디렉토리에 들어와 있는 것이다.)

참고) 본인의 JDK설치 위치를 못 찾겠다면 키보드의 [command] + [space]를 눌러서 Spotlight 기능으로 jdk를 검색하면 금방 찾을 수 있다. 그리고 절대경로를 잘 모르겠거나 편하게 위 명령어를 입력하고 싶다면, 터미널에 cd 입력 후 한 칸 띄우고 bin폴더를 드래그하여 터미널 안에 넣으면 위 문장을 완성할 수 있다.

 

2) 본인이 PATH에 등록할 디렉토리로 이동했다면 vi 명령어를 통해서 파일을 생성한다.

vi ~/.zshrc

 

위 명령어를 통해서 zshrc창이 실행되면 "i"키(insert mode 편집모드 진입)를 누른 후 환경변수를 등록하는 명령어를 입력한다.

export PATH=${PATH}:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/bin

 

환경변수를 새로 등록하거나 편집하는 명령어는 'export PATH=새로 등록할 프로그램의 주소'이다.
한 가지 주의해야 할 점은, 위의 명령어처럼 바로 해버리면 기존 환경변수에 덮어쓰기가 된다는 점이다.
따라서 기존 환경변수에 이어 새 환경변수를 등록하기 위한 명령어는 'export PATH=$PATH:새로 등록할 프로그램의 주소'를 사용한다.

이후 "esc" 버튼을 누르면 명령 모드(command mode)로 복귀하게 되는데 이때 :wq를 입력하고 return(엔터) 키를 누른다.

vi      종료 및 저장 명령어
:w     저장
:q      아무 수정 작업을 하지 않았거나, 이전에 :w로 저장을 했을 경우 종료
:wq  저장 후 종료
:q!    저장하지 않고 종료

return키를 누르면 원래의 터미널로 돌아오게 되는데 아래의 내용을 입력하여 설정을 마무리한다.

source ~/.zshrc

 

3) 설정이 마무리되었으니 정상적으로 path가 지정됐는지 확인해본다.

환경변수들의 경로인 path를 출력하는 명령어 'echo $path'를 통해서 본인이 입력한 JDK경로가 무사히 나온 것을 확인할 수 있다.

이제 경로 입력없이도 javac Hello.java가 무사히 실행되는지 확인해본다.

Hello.java 파일이 있는 디렉토리로 이동후 javac Hello.java 명령어를 입력하여도 오류가 발생하지 않는 것을 확인할 수 있다.

정상적으로 PATH 설정을 마쳤으며 이제 어느 디렉토리에 있더라도 javac를 입력하면 javac.exe를 사용할 수 있다.