반응형

WSL2에 설치된 우분투에서 GUI 프로그램을 실행하기 위해 /etc/resolv.conf의 nameserver IP를 확인하여 환경변수 DISPLAY에 넣는 과정을 스크립트로 작성한 과정을 다룹니다.



2021. 9. 4 - 최초 작성




윈도우 10에 WSL2를 설치하여 Ubuntu 22.04를 설치했습니다. 

https://webnautes.tistory.com/1847


WSL2에 설치된 우분투에서 GUI 프로그램을 실행하려면  Xming X Server for Windows가 필요한데 우분투 쪽에서 /etc/resolv.conf 파일의 nameserver IP를 확인하여 DISPLAY 환경 변수에 넣어주는 작업이 필요합니다. 



문제는 이 nameserver가 자주 바뀐다는 것이지요.  매번 확인하여 입력하기 번거롭습니다.

 

그래서 구글 검색엔진의 도움을 빌어 스크립트를 작성해봤습니다.



1단계 - 파일의 마지막 줄 출력

참고 https://kldp.org/node/90206 



/etc/resolv.conf의 마지막줄을 출력하면 nameserver IP를 얻을 수 있습니다.

그래서 tail 명령을 사용하여 마지막 1줄만 출력했습니다. 



webnautes@DESKTOP-8TRVTF8:~$ tail -1 /etc/resolv.conf

nameserver 172.28.112.1



2단계 - 두번째 컬럼 출력

참고 https://ahnty0122.tistory.com/29  



앞에서 nameserver IP가 포함된 한 줄을 얻기는 했지만 nameserver라는 문자열을 제거할 필요가 있습니다. 

두번째 열을 가져오면 되겠다 싶었습니다.  

 

tail의 출력 결과를 받은  awk 명령이 두번째 컬럼만 출력하도록 했습니다. 

 

webnautes@DESKTOP-8TRVTF8:~$ tail -1 /etc/resolv.conf |  awk '{print $2}'

172.28.112.1



3단계 - 실행 결과를 변수에 저장

참고 https://wikidocs.net/54525 



이제 쉘스크립트를 작성해봅니다. 바로 적용해도 되지만  앞에서 얻은 nameserver IP를 변수에 저장하는게 좋아보입니다. 

tail과 awk 명령을 사용하여 IP를 얻어온 결과를 변수 IP에 저장하고 시험삼아 화면에 출력하도록 쉘스크립트를 작성합니다. 

 

주의할점은 변수 IP에 저장하는 앞부분에서  IP = $ 처럼 공백을 두면 안되고 IP=$ 처럼 공백없이 입력해야 합니다. 



#!/bin/bash

IP=$(tail -1 /etc/resolv.conf |  awk '{print $2}')
echo $IP



nameserver.sh라는 파일에 복사하여 저장하고 실행 가능하도록 퍼미션을 조정한 후 실행시켜 봅니다. 

 

webnautes@DESKTOP-8TRVTF8:~$ nano nameserver.sh

webnautes@DESKTOP-8TRVTF8:~$ chmod +x nameserver.sh

webnautes@DESKTOP-8TRVTF8:~$ ./nameserver.sh

172.28.112.1




4단계 - 환경변수 DISPLAY에 저장

참고 https://stackoverflow.com/a/19961739 

 

Xming X Server for Windows에서 요구하는 형식으로 nameserver IP를 환경변수 DISPLAY에 저장하도록 쉘스크립트를 수정합니다. echo로 환경변수 DISPLAY에 값을 저장하는 문자열을 출력하면 됩니다.  

 

#!/bin/bash

IP=$(tail -1 /etc/resolv.conf |  awk '{print $2}')
export DISPLAY=$IP:0




nameserver.sh 쉘스크립트를 실행합니다. Xming X Server for Windows가 실행된 상태여야 합니다.  

터미널에서  gedit를 실행시며보면 정상적으로 실행되는 것을 볼 수 있습니다. 

 

webnautes@DESKTOP-8TRVTF8:~$ source ./nameserver.sh

webnautes@DESKTOP-8TRVTF8:~$ gedit





이제 터미널 실행시 바로 실행되도록 ~/.bashrc의 마지막줄에 source nameserver.sh만 추가하면 됩니다. 



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts