반응형

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



2021. 9. 4 - 최초 작성




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



https://webnautes.tistory.com/1170 




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만 추가하면 됩니다. 



반응형

해본 것을 문서화하여 기록합니다.
부족함이 있지만 도움이 되었으면 합니다.


포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.


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

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">