2016년 3월, 마이크로소프트는 우분투(Ubuntu)를 개발한 캐노니컬(Canonical)과의 파트너십을 발표하며 큰 화제를 모았습니다. '윈도우에서 리눅스를 사용한다'는 발표에 개발자들은 Bash가 윈도우에 도입될 것이라는 소식을 기뻐했습니다. 가상 머신이 아닌, 윈도우 10 애니버서리 업데이트(Anniversary Update)가 Bash의 전체 기능을 윈도우에 그대로 가져온다는 약속이었기 때문입니다.
Bash for Windows는 이미 한동안 공개되어 있으며, 놀라울 만큼 강력한 기능을 갖추고 있습니다. 물론 개발자를 위한 도구이지만, 명령줄 인터페이스 아래에는 더 많은 유용한 기능들이 숨어 있습니다. 이 글에서는 Windows에서 Bash를 어떻게, 왜 설치해야 하는지부터 여러분이 몰랐던 숨겨진 기능들까지 자세히 알아보겠습니다.
Windows용 Bash 시스템 요구 사항
Bash on Windows를 설치하는 과정은 매우 간단하지만, 먼저 기본 요구 사항부터 확인해 보겠습니다.
필요한 조건은 다음과 같습니다.
- Windows 10이 설치된 64비트 PC
- Windows 10 애니버서리 업데이트 적용
- 개발자 모드 활성화
설정 변경 후 재부팅이 필요할 수 있습니다. 재부팅 후에는 'Windows 기능'에서 Linux용 Windows 하위 시스템(Windows Subsystem for Linux, 베타)을 활성화합니다. 그리고 또 한 번 재부팅을 거치면 드디어 Bash를 실행할 수 있습니다.
정리하자면, 64비트 Windows 10 PC와 애니버서리 업데이트만 준비되어 있다면 몇 가지 기능만 켜는 것으로 손쉽게 Bash를 설치하고 실행할 수 있습니다.
Windows에서 Bash 활성화하기
Bash on Windows 활성화는 생각보다 훨씬 쉽습니다. 설치 절차를 단계별로 살펴보겠습니다.
1단계: 개발자 모드 활성화
설정 > 업데이트 및 보안 > 개발자용 메뉴로 이동한 뒤, 개발자 모드 항목을 선택합니다.
2단계: Windows 기능 켜기
Windows 키 + Q를 눌러 검색창을 열고, 'Windows 기능 켜기/끄기'를 검색해 실행합니다. 목록에서 Linux용 Windows 하위 시스템(베타)을 체크한 후 확인을 누르고 재부팅합니다.
3단계: Bash 실행 및 Ubuntu 설치
재부팅이 완료되면 시작 메뉴에서 Bash를 검색하고 Bash 실행 명령 옵션을 클릭합니다. 서비스 약관 동의 창이 나타나면 내용을 확인한 뒤 동의하면, Bash가 자동으로 다운로드됩니다.
다운로드가 끝나면 시작 메뉴에서 Ubuntu를 검색해 실행하면 됩니다. 이제 윈도우에서 정식 리눅스 셸 환경을 사용할 준비가 완료되었습니다.
Windows용 Bash로 할 수 있는 일
가장 궁금한 부분은 역시 '실제로 무엇을 할 수 있는가'일 것입니다. grep, ssh, nano 같은 표준 GNU 명령줄 도구는 완벽하게 작동합니다.
grep
ssh
nano
apt와 apt-get을 이용한 패키지 설치 및 업데이트도 문제없이 지원됩니다. 심볼릭 링크(symlink)와 파일 시스템 지원은 Linux용 Windows 하위 시스템(WSL) 환경을 통해 제공되며, Python, NodeJS, Perl 등 프로그래밍 언어 역시 사용할 수 있습니다.
Bash on Windows는 원래 GUI 애플리케이션 실행을 목적으로 하지 않지만, 방법이 없지는 않습니다. 자세한 내용은 아래에서 다루겠습니다.
다행히도 할 수 없는 작업도 있습니다. 바로 윈도우 앱의 편집·열기·삭제, 그리고 윈도우 시스템 설정 변경입니다. 명령줄에서는 실수가 종종 발생하기 때문에, 이런 안전장치는 매우 반가운 설계입니다.
리눅스 소프트웨어 설치하기
리눅스에서는 여러 가지 방법으로 앱을 설치할 수 있지만, 가장 널리 쓰이는 방식은 명령줄입니다. apt-get은 저장소(repository)에서 소프트웨어 패키지와 의존성 파일들을 함께 다운로드해 주는 편리한 도구입니다. 사용법은 아래와 같습니다(대괄호 대신 실제 패키지 이름을 입력).
sudo apt-get install [패키지명]
예를 들어 Git을 설치하려면 다음 명령을 입력합니다.
sudo apt-get install git
매우 간단합니다. 단, 슈퍼유저(superuser) 권한이 필요하므로 명령 앞에 sudo를 반드시 붙여야 합니다. Git을 비롯한 다른 소프트웨어는 소스 코드에서 직접 빌드하여 설치할 수도 있습니다.
GUI 리눅스 앱 실행하기
공식적으로 Bash on Windows는 그래픽 리눅스 앱을 지원하지 않습니다. 하지만 커뮤니티 사용자들은 WSL이 생각보다 다재다능하다는 점을 이용해 실행 방법을 찾아냈습니다. 특정 용도로 만들어진 것이 아니더라도 다른 방식으로 활용할 수 있다는 좋은 예시입니다.
핵심은 Bash for Windows를 설치하면 완전한 Ubuntu 사용자 공간(user space) 이미지 전체가 설치된다는 점입니다. 즉, GUI가 포함된 전통적인 우분투 설치 환경의 모든 바이너리를 그대로 얻게 되는 것입니다.
덕분에 X Server를 설치하고, apt-get으로 프로그램을 설치한 뒤, 디스플레이 환경 변수를 설정하고, 마지막으로 앱을 실행하는 우회 방법으로 GUI 리눅스 앱을 구동할 수 있습니다. 난이도 자체는 높지 않지만, 그래픽 앱을 실행할 때마다 디스플레이 환경 변수를 새로 설정해야 하는 번거로움이 있습니다.
또한 이는 비공식(unofficial) 기능이라 동작 여부가 여러 요인에 좌우됩니다. 리눅스 사용자라면 알겠지만, 앱 설치 시 의존성 문제나 세부 조정이 필요한 경우가 많은데, 이를 WSL 위에서 억지로 돌려야 하는 상황을 상상해 보면 쉽지 않다는 것을 짐작할 수 있습니다.
따라서 리눅스 GUI 앱이 꼭 필요하다면 Cygwin을 사용하거나, 윈도우 위에 가상 머신(VM)으로 리눅스 배포판을 돌리거나, 듀얼 부팅을 선택하는 편이 더 현실적입니다. 물론 윈도우에서 리눅스 GUI 앱을 돌리는 신기함 자체를 즐기고 싶다면 시도해 볼 만합니다.
파일 접근하기
Bash for Windows를 설치하면 완전한 Ubuntu 사용자 공간이 생성되며, 이 파일들은 윈도우 파일 탐색기로도 쉽게 접근할 수 있습니다. 다만 어디를 찾아봐야 할지 알아야 하는데, 그러려면 먼저 파일 탐색기의 보기 옵션에서 '숨김 파일, 폴더 및 드라이브 표시'를 활성화해야 합니다.
각 윈도우 사용자 계정마다 별도의 Ubuntu 사용자 공간이 존재하며, 다음 경로에서 찾을 수 있습니다.
C:\Users\사용자이름\AppData\Local\Lxss\rootfs
계정 홈 폴더는 아래 위치에 있습니다.
C:\Users\사용자이름\AppData\Local\Lxss\home\사용자이름
그리고 루트(root) 폴더는 다음과 같습니다.
C:\Users\사용자이름\AppData\Local\Lxss\root
반대로 Bash에서 윈도우 시스템 파일에 접근하는 방식은 조금 다릅니다. Bash의 기본 위치는 윈도우 파일 시스템 안에 생성된 Ubuntu 루트 디렉터리이며, 윈도우 시스템 드라이브를 직접 마운트(mount)할 수도 있습니다. C: 드라이브를 마운트하려면 다음 명령을 사용합니다.
/mnt/C
D: 드라이브라면 다음과 같습니다.
/mnt/D
이후 드라이브도 같은 방식으로 접근합니다. 명령줄 환경이므로 cd(디렉터리 변경) 같은 명령과 함께 조합해서 사용하면 됩니다. 참고로 권한 처리 방식이 다소 다른데, 관리자 폴더에 접근하려면 Bash on Windows 프로그램을 '관리자 권한으로 실행'해야 합니다.
서버 관리에 활용하기
Bash for Windows를 사용할 아주 실용적인 이유가 필요하다면? 서버 관리가 정답입니다. 서버를 구축하는 일은 생각보다 쉽지만, 헤드리스(headless) 서버라면 관리 수단이 필요합니다. PuTTY 같은 다양한 앱이 있지만, 명령줄이 가장 깔끔한 해결책입니다. SSH로 서버에 접속하면 터미널에서 바로 관리할 수 있습니다. Bash on Windows에서 원격 스크립트를 실행하는 것도 매우 잘 작동하므로, 활용 가치가 충분한 분야입니다.
Windows용 Bash 제거하기
Bash for Windows를 설치했다면 제거하는 것도 비교적 간단합니다. 크게 두 가지 방법이 있습니다.
방법 1: Ubuntu 환경만 삭제 (홈 폴더 유지)
명령 프롬프트나 PowerShell에서 다음 명령을 실행합니다.
lxrun /uninstall
그러면 "Ubuntu 환경과 모든 수정 사항, 새로 설치한 애플리케이션이 제거됩니다"라는 경고 메시지가 나타납니다. 진행하려면 y를 입력하세요.
방법 2: 완전 삭제 (홈 폴더 포함)
두 번째 방법은 Linux용 Windows 하위 시스템 자체를 비활성화하여 Ubuntu 환경과 홈 폴더를 모두 삭제합니다.
lxrun /uninstall /full
경고 메시지는 다음과 같습니다.
"Windows의 Ubuntu를 제거합니다. Ubuntu 환경과 모든 수정 사항, 새로 설치한 애플리케이션, 사용자 데이터가 삭제됩니다."
마찬가지로 y를 입력하면 제거가 진행됩니다.
마무리하며
Bash on Windows는 무궁무진한 잠재력을 지닌 도구입니다. 마이크로소프트 공식 블로그, Ubuntu 커뮤니티 사이트, 그리고 Reddit 같은 곳에 훌륭한 자료들이 가득합니다. /r/bashonubuntuonwindows 스레드에서는 Visual Studio Code 실행, Samba 파일 서버 구축, WSL을 활용한 개발 등 다양한 사례가 오갑니다. GUI 앱 실행 사례에서 확인했듯이, 가능성은 사실상 무한대에 가깝습니다.
여러분은 현재 Bash on Windows를 어떤 용도로 사용하고 계신가요? 아직도 윈도우에서 Bash를 실행 중이신가요? 아래 댓글로 의견을 들려주세요!