별걸다하는 IT/윈도우

[WSL] 윈도우 리눅스 환경변수 출력 안됨 적용 안될때 - WSLENV 윈도우 우분투 환경변수 공유

양햄찌(jhnyang) 2022. 2. 10. 00:38
반응형

안녕하세요

bash나 우분투가 익숙해서, 윈도우에서도 WSL 기능 이용해 우분투로 접근해 사용하는 분 계시죠??

 

혹시나 윈도우에 우분투 설치가 궁금하신 분은 아래 포스팅을 참고해주세요

2021.04.26 - [별걸다하는 IT/윈도우] - [WSL]윈도우에서 리눅스 설치해 배시 사용하기 - 윈도우 우분투

 

환경변수 내용 확인

분명 환경변수가 이렇게 등록되어있는데.. 

ORACLE_HOME, JAVA_HOME 등의 환경변수가 등록되어 있는데..

우분투에서 환경변수 값을 출력하면 아무것도 안떠요!!

그런데 PATH변수를 출력하면 또 값은 뜹니다.

왜 그러는걸까요?

 

윈도우와 WSL 환경변수 - WSLENV에 대해

원래 WSL이 접근 가능한건 윈도우 환경변수는 PATH뿐이였어요

WSL에 윈도우 PATH 환경변수가 등록되어 있었기 때문에 WSL에서도 윈도우 파일을 실행할 수 있었던 것이죠.

그래서 echo $PATH하면 PATH 환경변수에 저장된 내용들을 확인할 수 있었지만, 그 외 다른 변수는 출력이 안되었던 것!! 

 

하지만 WSL에서 환경변수를 설정할 수가 없었기 때문에 여러 이슈들이 발생을 했는데요.

당연히 그렇겠죠. 프로세스에서 변수를 넘겨주는 것도 못할거고..

다른 컴퓨터도 아니고 같은 환경에서 뭘로 접속하냐에 따라 세팅값이 다르게 되는건데..  

 

 

그래서 나온게 WSLENV입니다.

WSLENV는 윈도우와 WSL간에 공유되는 환경변수예요.

WSLENV에 환경변수를 등록하게 되면, WSL에서의 환경값과 윈도우에서의 환경값이 동일하게 적용되는거죠.

 

기존 Window에 등록되어있던, JAVA_HOME과 ORACLE_HOME 환경변수를 WSL에도 통일하기 위해 WSLENV로 설정을 해볼게요.

 

윈도우 환경변수 WSL에 등록하기

파워셸에 들어가주세요~~!

setx명령어로 JAVA_HOME 환경변수를 세팅해줬어요.

환경변수 값이 조회가 잘 된다면 굳이 새로 세팅해주지 않아도 돼요.

참고로 setx는 환경변수를 새로 만들거나, 기존에 있던 환경변수를 수정할 때 사용하는 명령어입니다.

 

setx WSLENV "JAVA_HOME/p"

JAVA_HOME환경변수 값을 WSLENV에 등록하는 명령어예요.

여기서 "/p"플래그는 WSL경로를 Win32경로로 옮기거나 WIn32경로를 WSL경로로 옮기거나 할 때 사용합니다.

Powershell에서 /p옵션을 썼으니까 Win32경로가 번역되어 WSL에 세팅되겠죠~

 

WSL ubuntu 창을 껐다가 재실행하면 

이전과 다르게 JAVA_HOME값이 잘 출력되는 것을 확인할 수 있습니다.

 

동일하게 이번에는 ORACLE_HOME변수를 WSL에도 등록될 수 있게끔 해볼게요.

 

짠 echo $ORACLE_HOME도 이전과 다르게 잘 출력되네요

 

WSL 환경변수 윈도우로 옮기기

이번에는 반대로 WSL에만 등록되어있는 환경변수를 윈도우에 같이 등록될 수 있게끔 해볼게요.

윈도우 cmd창에서 확인 결과 JAVA_HOME이라는 환경변수가 등록이 안되어있네요.

 

우분투에 들어가서 우분투에 설정되어있는 JAVA_HOME 경로를 윈도우에 넣어줍시다.

ubuntu@DESKTOP-DEAK0R:~$ export WSLENV=JAVA_HOME/p

간단하죠?

 

오늘은 WSLENV 환경변수에 대해 알아보는 시간을 가졌어요.

공감은 큰 힘이 됩니다. 담에 또 봐요~

반응형