Condividi tramite


윈도우 10에서 Bash shell 지원

지난 3월 30일부터 3일간 마이크로소프트의 연례 개발자 행사인 Build가 개최되었습니다. 이번행사에서는 Windows 10 Anniversary Update에 대한 내용도 포함되었습니다. 윈도우에서 리눅스에서 사용하는 오픈소스 명령어 툴인 Bash shell을 지원한다고 발표하였습니다.

윈도우 환경에서 리눅스 Command Line Interface를 사용하기 위해서기존에는 윈도우 플랫폼에서 실행할 수 있는 유닉스 환경인 Cygwin을 이용하거나 가상머신 혹은 컨테이너를 이용해야 했습니다. 기존 환경의 문제점을 개선하기 위해 마이크로소프트와 우분투를 창립한 캐노니컬(Canonical)이라는 회사가 합작하여 우분투 리눅스에서 수행되는 Bash shell 바이너리 그 자체를 윈도우에서 수행할 수 있도록 만들었습니다.

bash on windows

이를 위해 마이크로소프트는 일종의 레이어 치환 기술을 구현했습니다. 리눅스 바이너리가 시스템 호출을 하면 리눅스용 윈도우 서브시스템(WSL, Windows Subsystem for Linux)이 이를 윈도우 시스템 호출로 변환해 요청한 작업을 수행하는 방식입니다.

wsl

이는 기존의 방식과는 차별화되는 몇 가지 장점이 있습니다.
우분투 Bash shell을 이용할 수 있게 되었기 때문에 리눅스 네이티브 파일 시스템 외에도 개발자들을 위한 다양한 명령행 도구인 SSH, grep, sed, awk 등을 사용할 수 있게 되었습니다.
Ruby, Git, Python과 같은 언어를 이용하는 경우 Bash shell을 사용하여 조금 더 편리하게 개발하실 수 있습니다.
윈도우에서 PowerShell, DOS 명령 프롬프트, Bash shell을 모두 사용할 수 있게 되었습니다.

emacs

하지만, 초기버전이기 때문에 개선되어야 할 부분도 존재합니다.
윈도우에서 리눅스 Bash shell을 지원하는 것은, 개발자들을 위한 도구로써 지원하는 것이지 실제 운용 환경을 위한 용도는 아닙니다.
Bash 나 리눅스 도구는 윈도우용 애플리케이션을 수행할 수 없습니다. 즉, Bash shell 에서 윈도우용 응용프로그램인 메모장을 수행하지 못한다는 것 입니다.
Channel 9에 업로드된 Running Bash on Ubuntu on Windows 동영상을 통해 좀 더 자세한 내용을 확인하실 수 있습니다.

윈도우 10 프리뷰 버전을 미리 사용해 보시고 싶은 분들은 인사이더 프로그램을 이용해보시기 바랍니다.
설치를 원하시는 분들은 아래의 방법을 참고하시기 바랍니다.

최소 시스템 요구사항

  1. Windows 10 Anniversary Edition - Build 14316
    (2016/4/6 이후, Insider Fast Ring 버전으로 설치 가능)
  2. 64 비트 운영체제 여부
    (위의 정보는 Settings -> System -> About 에서 확인하실 수 있습니다.)

14316 보다 낮은 버전을 이용하시는 경우, 업데이트 정보를 확인하신 후 고급 설정 메뉴에서 Fast Track 이신지 확인하시기 바랍니다. (* Update and Recovery -> Advanced option -> Fast Track로 설정)

setting1

설치방법

  • 개발자 모드 설정
    Settings -> Update & Security -> For developers 접속
    Developer Mode 선택
    setting2
  • Windows Subsystem for Linux 기능 활성화
    Turn Windows features on or off 열기
    Windows Subsystem for Linux (beta) 선택
    setting3
    체크박스 선택 후 확인 버튼 누르기
    컴퓨터 다시 시작
  • 명령 프롬프트 창에서 bash 실행
    명령 프롬프트 열고 bash 실행
    setting4

이 외에도 추가 정보를 확인하시고 싶으신 분들은 아래의 페이지를 방문해보시기 바랍니다.

Comments

  • Anonymous
    April 12, 2016
    와 대단하네요
  • Anonymous
    April 18, 2016
    Bash shell에서 윈도우 앱을 실행하지 못 하게 되어 있는데, 반대로 윈도우에서 Bash script를 실행시키는 등의 접근은 가능한지 궁금하네요.
    • Anonymous
      May 04, 2016
      Bash와 Windows는 Binary File Format이 상이하므로 binary exeuctable을 직접 수행하는 것은 불가능합니다. 더하여 Bash script는 bash shell 자체를 기반으로 하기 때문에 Bash shell을 거치지 않고 Bash Script를 수행할 수는 없습니다.
    • Anonymous
      October 03, 2016
      윈도우에서 다음과 같이 리눅스 프로그램을 실행하거나 바로가기 등을 만드는 것은 가능합니다.C:\Windows\System32\bash.exe ~/test.shC:\Windows\System32\bash.exe -c "python3 test.py"
  • Anonymous
    June 02, 2016
    Windows Subsystem for Linux 이게 안 뜨는데 뭘해야 하나요? 외국 사이트에도 Windows Subsystem for Linux 메뉴가 안 뜨는 사람이 많고 질문글이 보이는데 혹시 이거 게시한 분은 직접 해 보시고 게시한 것인가요? 윈도10 64비트 사용자입니다.
    • Anonymous
      June 06, 2016
      이 기능을 사용하기 위해서는 OS Build 14316 버전 이상이어야 합니다. ('설정 -> 시스템 -> 정보'에서 확인 부탁 드립니다. ) 위에 소개해드린 '인사이더 프로그램' 이용하여 가장 최신의 OS Build 버전을 받으실 수 있습니다! 위의 글은 14317 빌드 버전, 64비트 운영체제 윈도우 에 직접 설치해보고 작성하였습니다.
      • Anonymous
        June 13, 2016
        일단 감사합니다. 빌드가 10586 이네요. 이거 여름에 14버전으로 업데이트 되는 것으로 검색되는데 일단 좀 기다려야겠네요. VMware없이 단순 gcc 사용할때 아주 좋을 듯 생각되네요
      • Anonymous
        July 30, 2016
        저도 PARK YOUNG MUN 님과 같은 상황인데요.혹시 os 빌드 업데이트 되었나요? 윈도우즈 업데이트하고 재부팅했는데 os빌드는 고대로네요.
  • Anonymous
    June 09, 2016
    Insider Preview 14342 버전 설치 하고 bash 설치 했는데요bash 실행해도 windows 10용 앱인 bash on ubuntu on windows 가 다운로드되지 않고 바로 bash command 입력할 수 있게끔 나오네요bash on ubuntu on windows를 따로 받을 수 있는 방법이 없을까요?
    • Anonymous
      June 09, 2016
      이것은 별도의 응용 프로그램이 아니라, Windows 운영체제에 탑재되어 있는 기능입니다. 따라서 별도로 다운로드 받아 설치하실 수는 없습니다.
  • Anonymous
    July 13, 2016
    참가자 프로그램 신청하고 빌드를 받을 때까지 대기해야 되는 시간이 명확해졌으면 좋겠습니다
    • Anonymous
      July 26, 2016
      저도 그 부분이 명확하면 좋겠다는 생각을 여러번 했는데, 의견 주셔서 감사합니다.
  • Anonymous
    August 23, 2016
    bash에 접근한뒤에 한/영 키전환은 어떻게 해야 하는지 궁금합니다.
  • Anonymous
    August 25, 2016
    시작 메뉴에서 bash로 검색했을 때 결과가 나오지 않으면 바로가기 이름이 잘못됐을 수 있습니다.%appdata%\Microsoft\Windows\Start Menu\Programs\Windows.lnk의 Ubuntu에 대한 BashBash on Ubuntu on Windows.lnk로 이름을 바꿔주면 됩니다.