Windows에서 Bash와 같은 쉘을 어떻게 사용합니까?


53

저는 Linux와 Mac을 사용하고 있으며, 곧 명령 줄에 대해 배울 것입니다.

기본 Mac / Linux Bash 쉘과 가장 유사한 터미널 창을 제공하기 위해 Windows에 무엇을 설치할 수 있습니까?

가능한 경우 .bash_aliases도 정의하고 싶습니다.


3
우리 putty는 실제 리눅스 서버에 연결했습니다. 창에서 나는 항상 cygwin서투른 설치 경험 때문에 꺼려 하고 사용하기 를 꺼려했습니다. 그러나 개인적으로 msys보다 사용하기 쉽고 vm보다 빠릅니다. 일단 cygwin이 설치되면, 디렉토리를 복사하는 것만으로도 이식성이 충분하지만, Windows 사용자 이름 (기본적으로)을 기반으로 각 컴퓨터 / 사용자에 새로운 사용자 이름을 생성합니다. 그러나 cygwin / msys는 사용자 정의 "배포"로 볼 수 있으므로 일부 [선택적] 명령 스위치가 누락 될 수 있습니다. 그들을 테스트하십시오.
n611x007

5
Microsoft는 방금 Windows 10의 다음 업데이트에 Bash가 포함될 것이라고 발표했습니다.
Dmitri Nesteruk

답변:


42

당신은 설치할 수 있습니다 Cygwin에서 또는 MSYS /는 MinGW를 하거나 (사용 예를 들어 가상 머신에서 전체 리눅스 배포판을 설치할 수있을 VirtualBox를 ).


다른 컴퓨터 (휴대용)에서 복사 한 135MB (25MB 압축)의 cygwin을 사용했습니다. 그것은 새로운 컴퓨터의 현재 사용자를 기반으로 새로운 사용자 이름을 만들었고, 그렇지 않으면 완벽하게 작동했습니다. 내 현재 cygwin은 800MB이며 빌드 환경, 200-300MB 소스 코드 및 일부가 있습니다.
n611x007

2
참고 : 이제 Windows에서 기본 사용자 모드 Linux 쉘 및 도구를 실행할 수있는 "Linux 용 Windows 하위 시스템"을 설치할 수 있습니다. 아래 답변을 참조하십시오 ...
MrHinsh-Martin Hinshelwood

48

이제 Windows 용 기본 사용자 모드 Linux 쉘 및 도구실행할 수있는 Linux 용 Windows 서브 시스템을 설치할 수 있습니다 . 이를 통해 Windows 에서 Bash 셸을 직접 실행할 수 있으며 Ubuntu를 기반으로합니다.

이 업데이트는 Windows 10 (Anniversary Update) (2016)에서 도입되었으며 기본적으로 활성화되어 있지 않습니다. Windows 10 1 주년 업데이트 시스템에서 새로운 기능을 사용하려면 다음을 수행하십시오.

  1. 설정-> 업데이트 및 보안-> 개발자로 이동하여 "개발자 모드"를 선택하십시오.
  2. 제어판-> 프로그램 및 기능 왼쪽 상단 창에서 "Windows 기능 켜기 또는 끄기"를 클릭하십시오.
  3. 대화 상자에서 "Linux 용 Windows 서브 시스템"을 확인하고 확인을 클릭하십시오.
  4. 머신 재부팅
  5. "bash"를 검색하고 클릭하면 명령 프롬프트가 열리고 "Ubuntu on Windows"를 설치할 것인지 묻고 "y"로 계속하십시오.
  6. 설치 후 UNIX 사용자 이름과 비밀번호를 작성하라는 메시지가 표시됩니다.
  7. 이제 bash 쉘을 사용할 준비가되었습니다

2015 년 프로젝트 Astoria가 Android 앱을 Windows로 가져 오기 시작한 이력은 그 목적을 위해 WSL (Windows Subsystem for Linux)이라는 Linux 하위 시스템을 구축했습니다. 결국 프로젝트 Astoria는 UWP (Universal Windows Platform) 전략을 훼손함에 따라 중단되었지만 일부는 유지되어 Windows 용 bash의 기초를 형성했습니다. 이 과정에서 Microsoft는 Canonical (Ubuntu Linux 제작자)과 협력하여 지원되는 모든 도구 / 바이너리가 포함 된 기본 이미지를 제공했습니다.

자세한 내용은
https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-on-ubuntu-on-windows-download-now-3/
https://blogs.windows.com을 참조 하십시오. / buildingapps / 2016 / 03 / 30 / run-bash-on-ubuntu-on-windows /
https://sec.ch9.ms/sessions/build/2016/P488.mp4 (비디오)



이 답변이 더 좋습니다!
피터

1
@Peter 감사합니다. 어제 간략하게 시도해 보았고, gcc / g ++를 얻을 수 있었으며, xserver를 통해 Firefox를 작동시킬 수있었습니다. '스크린'이 작동하지 않으면 다음 베타 버전에서 베타 버전으로 업데이트 될 것입니다. 이것을 말하면서, Windows에서 기본적으로 bash를 사용할 수 있다는 것은 환상적입니다! 그것은 많은 가능성을 열어줍니다. 쿠도스 마이크로 소프트!
Nemo

Powershell (admin으로 실행)에서도 실행할 수 있습니다 Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux". Windows 저장소에서 다음 중 하나를 설치하십시오. Ubuntu, Debian, OpenSUSE, Kali Linux
Zhenhir

18

다음은 2019 년 1 월 WSL에 관한 몇 가지 업데이트와 함께 각 옵션에 대한 세부 정보와 함께 2018-05 년에 사용 가능한 옵션 목록입니다.

눈에 띄는 옵션

사이 그윈바분

Cygwin은 다음을 제공합니다.

  1. bash 쉘과 Mintty 터미널
  2. Windows에서 실행되도록 컴파일 된 광범위한 공통 Linux 유틸리티
  3. Linux 프로그램을 Windows에서 실행할 수있는 포괄적 인 호환성 계층

Cygwin은 Windows에서 Linux 응용 프로그램을 쉽게 이식하는 것을 목표로합니다. 일부 C 프로그램이 Unix 용으로 설계되었고 파이프, Unix 스타일 파일 및 디렉토리 액세스 등의 기능을 사용하려는 경우 Cygwin 용으로 컴파일 할 수 있으며 Cygwin은 코드와 외부 OS (Windows) 간의 호환성 계층으로 작동합니다 . 이를 통해 동일한 C 프로그램이 Linux 또는 Windows에서 거의 또는 전혀 수정없이 작동 할 수 있습니다. Cygwin을 설치할 때 방대한 Linux 프로그램 목록이 준수되어 실행될 수 있습니다. 그러나이 프로그램의 사용자는 아마도 유닉스에 익숙해야 할 것입니다. 예를 들어 , Windows 줄 종료 ( ) 대신 Unix 줄 종료 ( )를 사용하는 /cygdrive/c/autoexec.bat대신에 인수를 전달해야합니다 .c:\autoexec.bat\n\r\n

모든 Cygwin 프로그램 모음은 리포지토리로 구성되며 Cygwin에는 전통적인 Linux 패키지 관리자가 없지만 매우 직관적 인 방식으로 언제든지이 리포지토리에서 프로그램을 추가, 제거 및 업데이트 할 수 있습니다 (Cygwin의 setup.exe는 설치가 완료된 언제든지 )

Babun 은 Cygwin으로 쉘, git, 자동 업데이트 및 플러그인 지향 아키텍처를위한 완전한 기능의 패키지 관리자 (pact), oh-my-zsh를 보유하고 있습니다. 기본 쉘은 zsh이지만 bash로 쉽게 전환 할 수 있습니다. 여분의 무게를 신경 쓰지 않으면 바닐라 Cygwin에서 멋진 업그레이드처럼 보입니다.

Mingw-W64

Mingw-w64는 다음을 제공합니다.

  1. 배쉬 쉘,
  2. 상당한 양의 Linux 유틸리티
  3. Linux 호환성 계층없이 (또는 최소한의 계층으로) 실행될 앱을 빌드하기위한 SW 개발 툴체인.

MinGW는 주로 소프트웨어 배포 및 Windows 용 빌딩 플랫폼입니다. 특히 GCC, make, bash 등과 같은 GNU 컴파일러 도구의 Windows 포트입니다. 여기에는 상당한 양의 GNU 도구와 최소 Unix 호환성 계층이 포함됩니다.

Mingw-w64와 Cygwin의 주요 차이점은 우선 순위입니다. Cygwin은 모든 주요 Unix 시스템 호출 및 라이브러리의 전체 구현을 포함하는 완전한 POSIX 호환성 계층을 제공하는 것을 목표로합니다. 성능은 호환성보다 부차적입니다. MinGW는 성능을 목표로하여 Windows에서 쉽고 빠르게 구현할 수없는 특정 POSIX API를 제공하지 않습니다. 또한 MinGW의 주요 목표는 소프트웨어 개발자입니다. 그럼에도 불구하고 일반 사용자는 쉘을 사용할 수 있으며 일반적인 목적에는 유틸리티가 포함됩니다.

Windows 용 MSYS2Git

MSYS2는 다음을 제공합니다.

  1. bash 쉘과 Mintty 터미널
  2. 상당한 양의 Linux 유틸리티
  3. OS 프로그램을 설치하기위한 모든 기능을 갖춘 명령 행 패키지 관리자
  4. Cygwin 및 MinGW의 부품을 사용하여 포괄적 인 Linux 호환성 계층의 유무에 관계없이 응용 프로그램 작성을 지원합니다.
  5. Windows에서 소프트웨어를 쉽게 설치, 사용, 빌드 및 이식 할 수있는 소프트웨어 저장소 및 패키지 관리자 (pacman).

MSYS2는 주로 MinGW와 같은 Windows 용 소프트웨어 배포 및 빌딩 플랫폼이지만 Cygwin 방식과 MinGW 방식을 결합합니다. MSYS2를 사용하여 "MinGW 프로그램" 또는 "MSYS2 프로그램"을 작성할 수 있습니다 . 나중에 MSYS2 (msys-2.dll)의 호환성 계층에 연결되며 Cygwin의 호환성 계층 개발 에 몇 가지 추가 / 수정이 적용 됩니다. 그러나 두 프로젝트의 저장소는 완전히 관련이 없습니다. 따라서 MSYS2와 Cygwin은 모두 grep.exe완전히 다른 버전을 제공 할 수 있습니다.

Windows 용 Git은 git이 설치된 MSYS2이거나 최소한 MSYS2를 기반으로합니다 . 동일한 쉘 (bash), 터미널 (Mintty) 및 패키지 관리자 (pacman)를 제공합니다. Windows에서 지배적 인 Git을 실행하는 가장 보편적 인 방법 인 것처럼 보이고 멋진 Unix 환경을 얻습니다.

Linux 용 Windows 서브 시스템 (WSL)

WSL은 완전히 다른 방법을 사용하여 동일한 문제를 해결합니다. 커널 호출을 차단하고이를 Windows 커널 호출로 변환하는 WSL의 Linux 시스템에서 실행하는 것과 동일한 코드를 실행합니다 (Wine의 반대). 물론 번역이 완벽하지는 않지만 Microsoft는 베타 경고를 중단했습니다 . 2018 년 전에 Windows Server에서 WSL을 사용할 수 없었기 때문에 많이 조사하지 않았습니다. 어쨌든 주식 우분투 설치에서 찾을 수있는 대부분의 CLI 제품으로 멋진 bash 쉘을 얻습니다. Microsoft는 공식적으로 "WSL은 GUI 데스크탑 또는 응용 프로그램 지원을 목표로하지 않습니다"라고 말합니다.그러나이를 수행하는 방법에 대한 비공식적 인 지침이 있습니다. 현재 상황 (2018 년 초)에 WSL의 주요 단점은 다음과 같습니다 .a) 화면 렌더링 및 디스크 액세스 속도가 매우 느립니다 .b) Windows에서 WSL (Linux) 파일을 편집하지 않아야합니다 .c) 64 비트 Windows에서만 실행됩니다. 다음 은 cygwin과의 오래되었지만 훌륭한 비교 입니다. Rich Turner는 WSL 팀의 멤버이며 WSL에 관한 유용한 정보를 많이 게시했습니다.

공통점

WSL을 제외하고 위의 대부분의 도구는 많은 공통 기술 (라이브러리, 실행 파일, 개념)을 공유합니다. 예를 들어 MinGW와 함께 제공되는 bash 쉘은 cygwin.dll의 포크 인 msys-2.dll에 의존합니다. 그래서 네 혼란의 여지가 충분합니다 :-)

더 많은 옵션

Cmder 는 멋진 터미널과 Windows 용 bash 같은 쉘을 제공합니다. 주요 구성 요소는 Conemu (터미널)입니다. 그 외에도 강력한 Bash 스타일 명령 줄 편집 , 사용자 정의 프롬프트 레이아웃 및 Monokai 색 구성표를 제공하는 Clink 가추가되었습니다. 네이티브 윈도우 콘솔 프로그램과 호환됩니다.

Scoop 은 많은 GNU 툴을 포함하여 잘 알려진 크로스 플랫폼 프로그램을위한 명령 행 패키지 관리자를 제공합니다. 사전 컴파일 된 패키지를 다운로드합니다. 쉘이나 터미널을 제공하지는 않지만 대신 Windows의 cmd.exe에서 실행됩니다 (모든 제한이 있지만 기본 Windows 콘솔 프로그램과의 완전한 호환성). 또한 컴파일러 제품군이 포함되어 있지 않습니다 (물론 컴파일러와 개발 도구는 특종으로 설치할 수있는 일반적인 패키지입니다). Scoop이 설치하는 많은 프로그램은 MinGW / MSYS 프로젝트에서 직접 가져 오거나 도구를 사용하여 작성되었습니다.

더 많은 옵션

다음 솔루션은 활성화되지 않은 것으로 보이며 테스트하지는 않았지만 다른 사람들을 위해 일하는 것처럼 보입니다.

Gow (Gnu On Windows)는 쉘이없는 Cygwin의 경량 대안입니다. 기본 win32 바이너리로 컴파일되고 Windows의 cmd.exe를 통해 사용할 수있는 약 130 개의 매우 유용한 오픈 소스 Linux 응용 프로그램을 설치하는 편리한 Windows 설치 프로그램을 사용합니다. 가능한 한 작게 (약 10MB) 설계되었습니다.

UnxUtils & GnuWin32 : UnxUtils 는 일반적인 GNU Unix와 유사한 유틸리티 포트를 네이티브 Win32에 대한 모음이며 Microsoft C 런타임 msvcrt.dll에 따라 실행 파일 만 있습니다. 주요 부분 과 몇 가지 업데이트를 다운로드해야 합니다 . GnuWin32 는 UnxUtils보다 최신 버전이지만 지원 파일 (예 : DLL)이 필요합니다

MSYS & 는 MinGW는 것 같습니다 있다폐기 그래서 나는 그들을 바라 보았다 결코 MSYS2 &는 MinGW-W64에 의해.

Cygwin & MSYS2에 대한 몇 가지 일반적인 문제

터미널에 대하여

Mintty는 Cygwin, MSYS2 및 그 파생어에서 사용되는 터미널입니다. Windows 기본 콘솔 프로그램을 실행하는 경우 Windows 명령 프롬프트를 쉽게 대체 할 수는 없습니다. 간단한 텍스트 출력을 가진 프로그램은 일반적으로 잘 작동하지만 대화 형 및 전체 화면 프로그램에는 종종 문제가 있습니다. 읽기 Mintty의 홈 페이지에 더 도에 항목이 "힘내 배쉬에서 실행할 때 일부 기본 콘솔 프로그램이 작동하지 않습니다"읽기 윈도우 자주 묻는 질문 힘내 . 이 항목에는 이러한 종류의 문제에 직면 할 때 권장 사항이 있습니다.

이러한 문제를 해결하는 방법에는 여러 가지가 있습니다.

  • winpty 유틸리티를 사용하여 문제가있는 프로그램을 실행하십시오 . 이렇게하면 더 좋은 민트 터미널을 계속 사용할 수 있지만 많은 프로그램에 대한 해결 방법이 필요한 경우 다루기가 어려워 질 수 있습니다.
  • [cmd.exe 사용]을 선택하고 "빠른 편집", 적당한 크기 및 스크롤 백 및 적합한 유니 코드 글꼴로 구성하십시오. 여전히 [cmd.exe]의 다른 단점과 함께 살아야합니다.
  • Conemu를 설치하고 사용 하십시오 .

다른 문제

명심해야 할 두 가지 중요한 사항은 다음과 같습니다.

  1. 힘과 디버그하기 어려운 문제 사이에 거래가 있습니다. 솔루션이 강력할수록 초기에는 Linux 계층과 관련이없는 방식으로도 더 많은 문제가 발생할 수 있습니다.

  2. Linux 경험이 충분하지 않으면 Cygwin / MSYS2 / MinGW와 같은 더 강력한 솔루션을 사용하지 마십시오

UnxUtils와 GnuWin32는 힘이 가장 적지 만 두통을 일으킬 가능성이 가장 낮습니다. Cygwin과 그와 유사한 기능은 힘과 두통 모두에서 최고가 될 것입니다. Cmder는 중간에 있습니다. 따라서 가장 강력한 솔루션이 필요한 경우 숙면을 취하고 완전히 집중하십시오. 새롭고 불안정한 것을 테스트하는 동안 강력한 솔루션을 사용하지 마십시오. 또한 cmder와 같은 중간 정도의 복잡성 솔루션이 흠이 없다는 것을 잊지 마십시오.

Windows를 섀도 잉하는 Linux 명령의 문제는 Cygwin / MSYS2 / MinGW와 같은 솔루션에서 디버그하기 어려운 일반적인 원인입니다. 예를 들면 다음과 같습니다. timeout 명령을 사용하는 .bat 파일이 있습니다. Cygwin에서 실행하면 시간 초과가 Linux 명령이지만 구문이 다르기 때문에 실패합니다. 문제를 발견 한 후 .bat 파일 맨 위에 PATH = ...를 추가하여 windows 명령의 우선 순위를 확인할 수 있음을 알았습니다. 그러나 훨씬 더 비밀스러운 "입력 리디렉션이 지원되지 않습니다" 오류가 발생하고 그 이유를 찾기 전에 해결 방법으로 해결되었습니다.

다음은 cmder 관련 문제의 예입니다. Cmder에서 Windows 버전의 unison을 실행 중이었고 일부 특수 조건에서는 오류 메시지전혀 표시되지 않았습니다 . 동일한 명령이 항상 cmd.exe에서 완벽하게 실행되었습니다. 재미있는 점은 Cygwin에서도 완벽하게 실행되고 있다는 것입니다 (사실 유니 코드 파일 이름을 가진 경우 Cygwin 터미널은 cmd.exe가 종종 유니 코드 텍스트가 잘못 표시되기 때문에 cmd.exe보다 낫습니다).

이 안내서에 대하여

2017-05 년 동안 나는 오래 전에 (주로 CygWin과 cmder이지만 개발 목적으로는 결코 사용하지 않았지만) 위의 도구의 차이점을 이해하지 못했습니다. 그래서 나는 몇 시간을 조경을 보냈다. 이 안내서는 내가 보관 한 메모의 결과입니다. 나는 현장 전문가는 아니지만 모든 관련 정보를 찾아 내고 비판적인 눈으로 읽으며 가장 중요한 부분을 명확하게 제시하려고 노력했습니다. 문제가있는 경우 의견을 말하고 문제를 해결하기 위해 최선을 다하겠습니다.

마지막으로 일부 용어 문제에 대한 사과 :이 텍스트에서는 때때로 UNIX 또는 POSIX 대신 Linux라는 용어를 사용합니다. 나는 그것들이 동일하지 않다는 것을 알고 있지만 장거리에서 주제에 접근 할 때 그것들을 구별하는 것은 매우 어렵습니다. 어렵지 않더라도 시간이 걸리지 않습니다 ;-)


2
이것은 훌륭한 답변입니다. 결과와 경험을 공유해 주셔서 감사합니다.
Daniel Sokolowski

종합적인 답변이지만 pacman그렇지 않습니다packman
Adrian Günter

이것이 어떻게 받아 들여질 수 없는가? 이 모든 것을 자세히 설명해 주셔서 감사합니다.
42.

10

최소 MinGW 세트 와 최소 MSYS 세트 를 다운로드하여 설치하는 것이 좋습니다 . MinGW 설치 관리자는 설치하려는 패키지를 쉽게 선택할 수있는 GUI를 제공합니다. 원하는 것이 BASH이면 설치에 몇 메가 바이트가 넘지 않습니다.

업데이트 : 훨씬 고급 MSYS2 로 이동 했으며 패키지 관리를위한 ArchLinux pacman 도구 포트가 있습니다. MSYS2 설치 프로그램은 필요한 모든 것을 갖추고 있으며 민트 를 사용하여 절대적으로 완벽합니다.


10

도 있습니다 땡그랑 소리 사용할 수 GitHub의에서 . 후크 라이브러리를 사용하여 Windows 명령 프롬프트에 통합됩니다.

프로젝트 설명에서 :

Clink는 기본 Windows 셸 cmd.exe와 GNU Readline 라이브러리의 강력한 명령 줄 편집 기능을 결합하여 풍부한 완성, 기록 및 줄 편집 기능을 제공합니다.

(따라서 프로그래밍 언어로 bash 기능 또는 다른 유닉스 제품을 제공하지 않습니다)

나는 직장에서 리눅스를 사용하고 때로는 Bash에서 기대하는 것처럼 작동하지 않는 cmd를 사용하는 경우가 있습니다. Clink를 사용하면 이러한 단점 중 일부를 극복 할 수 있습니다.

최근에, 나는 리눅스 시스템 기능을 에뮬레이트하고 그 위에 어떤 종류의 시스템을 제공하는 flinux 라는 유망하지만 아직 할 수있는 모든 프로젝트를 발견 했습니다 (현재 아치 리눅스를 기반으로 함)


Clink는 실제로 언어를 변경합니까, 아니면 cmd.exe의 내용 만 개선합니까? 이것은 대답에서 완전히 명확하지 않습니다.
Sarge Borsch

Ctrl + R을 사용한 역방향 검색, PATH 검색 명령 완료 등과 같은 일반적인 * nix 셸 기능을 사용할 수 있습니다.
Andreas

bash 구현이 아닙니다.
Sarge Borsch

음, 아니 cmd.exe사이트에 설명 된대로 확장 프로그램 ;)
Andreas

7

뿐만 아니라 faffaffaff 말한 , Windows 용 힘내 (예 : 배쉬와 몇 가지 일반적인 리눅스 명령 줄 프로그램이 포함되어 , 나오지도 , 그리고 둔한 ). MSYS를 기반으로 합니다. 프로그램의 버전은 오래되었지만 예를 들어 Bash는 버전 3.1입니다. Cygwin 에는 최신 버전의 유틸리티가 있습니다.

또한 터미널 에뮬레이터로 ConEmu 를 사용합니다 (주로 Vim의 구문 강조, 탭 페이지 및보다 쉬운 복사 붙여 넣기). console2 도 시도하지 않았지만 인기있는 터미널 에뮬레이터입니다.


BTW : ConEmu는 또한 MSYS2 설치를 인식하고 일부 Clink 통합을 허용합니다.
Andreas


1

방금 Cygwin을 내부적으로 통합하고 나에게 좋은 Babun으로 시도했습니다. :)

다운로드 파일의 크기는 약 250MB입니다. 그러나 설치는 간단합니다. 아무것도 구성 할 필요가 없으며 작동합니다!


Babun에는 전체 cygwin이 포함되어 있습니다. 설치 과정은 약간 해킹 적입니다 (현재 zip 아카이브는 위험한 파일로 크롬에 의해 차단됩니다). 그러나 지금까지 내가 찾은 최고의 터미널 교체.
Tombart

Babun은 정말 느 렸습니다. 나는 conemu와 git shell을 사용하기로 바꾸었다
wordsforthewise
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.