본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


Linux

리눅스 공부 7 - JDK 전역화 하기

반응형

윈도우에서 programm files는 프로그램 실행에 필요한 파일들을 저장하고 여러 사용자가 공유하는 폴더이다 . 

 

리눅스에서 위와 같은 역할을 하는 디렉토리는 /usr 디렉토리다 . 

 

저번에 링크파일을 통해 jdk를 $PATH에 올려 놨었는데 이번에는 /etc/environment에 직접 JDK 위치를 올려놓는 방식으로 전역화 해보려한다. (profile에 올려놓는 것보다는 environment에 올려놓는 것이 좋다 .)

 

현재 압축해재한 jdk는 ~/download라는 폴더에 위치하고 있는데

먼저  /usr/local에 java라는 디렉토리를 만들고 jdk 패키지를 /usr/local로 옮겨보자 .

 

 

sudo mkdir java   (/usr/local에서 java라는 폴더생성 /user/local의 소유자가 root이기 떄문에 sudo코드로 실행)

 

mv jdk1.8.0_161 /usr/local/java  (jdk를 /user/local/java 로 이동) 

 

 

 

jdk 디렉토리가 잘 이동되었다. 

 

이제 /etc/environment에 해당 경로를 등록해보자

 

/etc/environment에는 PATH에 대한 정보들이 들어 있다 : 으로 PATH들이 구분되어 있으니 맨뒤로 가서

:입력후 현재 jdk의 위치인 /usr/local/java/jdk1.8.0_161/bin (bin에 실행파일들이 있으니 bin까지 설정해줘야함)

를 등록하자 

 

디렉토리명이 기억이 안날 경우 ctrl + z를 누르면 현재 nano 창을 백그라운드로 실행시킨다. 

 

경로 확인 후 원래 foreground로 돌아가려면 fg 1로 nano 창으로 돌아갈 수 있다.

 

경로등록을 하고 저장 후에 java -version을 해보면 실행되지 않는다 . 변경된 /etc/environment가 읽히지 않아서 그런다. 로그아웃 후에  다시 로그인하여도 되지만 이럴경우 

 

source 명령어를 사용하면 해당 파일을 읽는다 .

 

source /etc/environment 를 실행 하고 다시 java -version을 해보자 java version이 잘 출력된다. 

 

source를 하면 $PATH가 초기화 되는 이유가 머지 ?(source 작동 방식 찾아보기)

 

환경변수로 사용되고 있는 jdk 디렉토리의 경로는 전체 사용자가 사용하는 것인데 

ls -l로 jdk 디렉토리의 소유자를을 보면 jdk를 설치한 사용자로만 소유자와 소유그룹이 설정되어 있다.

디렉토리의 other 권한이  r-x (읽기 , 실행가능)이기 떄문에 실행이 가능했지만 만약 실행권한이 없었다면 

환경변수로 설정했어도 다른 사용자들은 실행할 수 없었을 것이다 . 

 

위의 문제를 해결하기 위해선 소유그룹을 만들어 줘야한다.  소유그룹 만드는 것은 다음번에 알아보려한다.

 

 

 

 

반응형