내 VS Code 터미널에 Windows (WSL)의 Ubuntu에서 Bash를 사용하려면 어떻게해야합니까?


87

다른 질문 은 git-bash와 같은 것을 사용하는 방법을 다루지 만 VS Code 용 터미널로 새 WSL에 스핀을주는 것은 동일하지 않습니다. git- 대신 실제 Ubuntu Linux 하위 시스템에서 실행되는 bash에 액세스 할 수 있습니다. Windows 하위 시스템에서 실행되는 bash 터미널.

그렇다면 어떻게 VS Code 터미널로 작동하고 특히 기능 개발 환경 터미널로 작동하게하려면 어떻게해야할까요?

git-bash와 달리 WSL의 Ubuntu Linux 구성은 WSL과 Windows 자체 간의 상호 작용으로 인해 NPM이 Windows Program Files 디렉터리에서 실행을 시도 (및 실패)하는 것과 같은 몇 가지 문제를 제공 할 수 있기 때문에 불행히도 간단하지 않습니다. 경로 지정 조건 및 Compass와 같은 일부 패키지는 Linux에서 개발하는 데 익숙하지 않은 사람에게 반드시 즉각적인 이유가 아닌 이유로 실패합니다. 가장 자주를 통해 설치할 때 실행 도구를 사용 VS 코드에 대한 신뢰할 수있는 WSL 터미널 환경이 할 수있는 간단한 방법이 무엇인가 apt-get또는 npm?

답변:


184

이 답변은 VS Code에서 터미널에 WSL을 사용할 때 다른 사람들이 문제 해결에 1-2 시간을 소비하지 않고 일반적인 문제에 대해 서로 다른 솔루션을 천천히 찾는 데 도움이됩니다. 특정 패키지 설치는 다루지 않지만, 존재 여부에 의존하는 것을 설치하고 관련 공통 설정을 수정할 때 종속성으로 제대로 설치되지 않을 수있는 일반적인 패키지입니다.

단계 요약

  • WSL 설치
  • 터미널 용으로 구성된 VS 코드 (또는 기타 IDE)
  • .profile에 설치된 NPM 및 경로 수정 (다른 도구에 도움이 될 수 있음)
  • 빌드 필수 설치 (make / gcc / etc를 사용하는 모든 도구에 도움이 됨)
  • WSL을 사용하는 VS 코드 작업
  • 기타

시작 및 요구 사항

  • 당신은해야한다 WSL가 설치되어 . ( 적절한 업데이트와 함께 64 비트 Windows 10을 실행해야 함을 의미합니다 .) 아직 설치하지 않은 경우 설치 가이드를 따릅니다 . 이를 위해서는 재부팅이 필요합니다.

VS 코드 터미널 구성

어느 CTRL+의 ,키보드 단축키 또는 FilePreferencesSettings

편집 창의 오른쪽 상단에서 올바른 컨텍스트 ( 사용자 설정 또는 작업 공간 설정) 에서 작업하고 있는지 확인 합니다 .

여기에 이미지 설명 입력

설정 검색 창에서 입력하십시오 terminal.integrated.shell.windows(또는 충분히 오래 걸리면 무엇이든)

실제 설정 파일에서 설정을 찾아 사용하고 Edit(마우스를 선 위에 놓으면 왼쪽에 있습니다. 마우스가없는 터치 스크린에서는 선의 왼쪽을 간단히 탭할 수 있어야합니다.)Replace in Settings

여기에 이미지 설명 입력

오른쪽 창에서 수정 된 json 파일에 생성 된 항목을 수정합니다. 이전 설정을 다음으로 바꿉니다.

"C:\\WINDOWS\\Sysnative\\bash.exe"

여기에 이미지 설명 입력

기타 IDE : IntelliJ

설정 / 도구 / 터미널을 열고 "셸 경로"필드를 "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"

개발자 용 WSL Ubuntu Bash 터미널 기능 만들기

당신이 사용하는 경우 CTRL+ `터미널을 열고, 당신은 지금 떠들썩한 터미널이 있어야합니다.

bash.exe를 처음 실행하는 경우 Ubuntu 설치에 대한 질문이 표시 될 수 있습니다. 그렇게하세요. 설치가 완료되면 WSL Ubuntu에서 사용할 사용자 이름과 암호를 선택합니다. 이는 현재 Windows 계정과 일치하지 않아도되며 Windows 계정의 암호 변경에 따라 변경되지 않는다는 점에 유의해야합니다.

완료되면 터미널에 bash 명령 프롬프트가 표시됩니다.여기에 이미지 설명 입력

Windows의 git-bash와 달리 이것은 별도의 환경입니다. 외부에서 Windows 소프트웨어 를 시작 하는 데 사용할 수 있지만 실제 터미널에서 실행하려면 적절한 Ubuntu 패키지가 필요합니다.

현재 WSL에는 예상하거나 사용하던 모든 것이 포함되어 있지 않으며 기본 프로필 설정에 따라 Windows에서로드 한 소프트웨어와 일부 문제가 충돌 할 수 있습니다.

업데이트 및 자식

참고 : 나는 이것의 단일 부분이 필요한 사람들을 위해 이것을 sudo로 문서화 할 것이지만 처음에 한 가지 옵션은 대신 sudo susudo없이 다음 명령을 실행하는 것입니다.

Ubuntu 패키지 가 최신 상태 인지 확인하십시오 .

sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove

git 설치 :

sudo apt-get install git

Node.js 및 NPM

Windows에 Node 또는 NPM이 이미로드되어있는 경우 Ubuntu에서 실행하면 경로 문제로 인해 문제가 발생할 수 있습니다. 따라서 Ubuntu 기본 버전을 설치하고 대신 사용되는지 확인해야합니다.

먼저 NPM과 함께 node.js를 설치 합니다. (대안 : NVM 을 설치하고이를 사용하여 node.js 설치)

설치 후 npm 명령을 실행하면 실패 할 수 있습니다. 예를 들어 다음과 같은 결과를 npm -v얻을 수 있습니다.

: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")

이것은 매우 간단한 솔루션경로 지정 문제 때문 입니다. (같은 당신의 마음에 드는 CLI 편집기를 사용하여 nano, vim, emacs, catsed... 등), 열려면~/.profile

nano ~/.profile

참고 : Windows 도구를 사용하여 Linux 파일을 편집하지 마십시오 . ( 이를 설명하는 굵은 빨간색 텍스트가있는 공식 링크에 대한 @ david-c-rankin의 의견 에 감사드립니다 ) 터미널에서 CLI 편집기를 사용하지 않으려면이 게시물 하단에서 방법에 대한 링크를 참조하십시오. GUI 하나를 실행합니다.

현재 WSL의 기본 bash PATH 변수는 다음과 같습니다.

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

처음 두 바이너리 디렉토리 뒤에 Windows 경로를 삽입합니다. 불행히도 이것은 Windows가 npm을 설치하기 전에 / usr / bin이 사용되는 결과를 초래하지 않으므로 최종 $ PATH 앞에 추가하십시오.

PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"

저장 한 다음 터미널을 다시로드하거나 경로 파일을 소싱하십시오.

source ~/.profile

빌드 필수

컴파일이 필요한 모든 것을 사용하거나 다른 방법으로 make를 사용한다면, 이것들을 설치해야 할 것입니다. 따라서 node.js를 설치하는 동안 설치하지 않은 경우 설치하십시오. 모든 것을 개별적으로 설치하는 것보다 빌드 필수 패키지 를 사용 하는 것이 훨씬 쉽습니다 .

Ruby FFI에 의존하는 Compass와 같은 패키지는 이것 없이는 실패합니다. 도구를 올바르게 설치하고 실행하는 데 문제가있는 경우 gcc가 있는지 확인하고 설치하는 것이 좋은 시작점이 될 수 있습니다.

sudo apt-get install -y build-essential

Ubuntu를 사용하여 작업 실행

VS Code의 tasks.json을 사용하여 빌드 작업을 실행하는 경우 기본적으로 Ubuntu 대신 Windows 하위 시스템을 사용하여 실행됩니다. 때로는 이것이 원하는 것일 수 있지만 Windows가 아닌 Ubuntu에서 grunt-cli 설치를 마쳤다면 아마도 그렇지 않을 것입니다.

VS Code는 최근 작업 실행기를 터미널로 설정할 수있는 작업 작동 방식에 대한 2017 년 5 월 업데이트를 제공했습니다 . 이것은 작업을 마이그레이션하는 가장 쉬운 방법입니다.

간단히 설정

"runner": "terminal",

당신에 tasks.json당신이 완료 (가정 적절한 모든 도구가 지금 WSL 우분투에 설치 실행하려고있다).여기에 이미지 설명 입력

이것은 매우 이식성이 뛰어나 WSL이 있거나없는 시스템 또는 다른 OS간에 변경이 필요하지 않으며 내가 권장하는 방법입니다.

현재이 메서드는 다른 TERMINAL탭 인스턴스 (드롭 다운에서 액세스)를 생성합니다 . 여전히 적절한 감시자를 설정할 수 있지만 더 이상 OUTPUT탭 에 있지 않음을 의미합니다 .

이전 메서드는 WSL Ubunutu Bash 셸을 호출하고에 표시 할 수 있으며 OUTPUT-c 인수를 사용하여 bash.exe를 호출하거나 셸 스크립트를 사용합니다. 불행히도 우리가 bash명령을 만들고 대신 인자로 실행하려는 것을 전달하기 때문에 의미 론적이지 않습니다 . 이것은 또한 다른 시스템에 빠르게 이식 할 수 없음을 의미합니다.

터미널 자체에 대해 이전에 VS Code에 지정한 것과 동일한 위치를 C:\\WINDOWS\\Sysnative\\bash.exe값으로 사용할 수 있습니다.command여기에 이미지 설명 입력

args배열 의 첫 번째 요소 -c를 실행하려는 명령으로 설정하고 두 번째 요소를 설정하십시오 ( 이 답변의 후반부에 대한 크레딧 ).

또는 여기에 표시된대로 대신 쉘 스크립트를 실행할 수 있습니다 .

추가 유용한 정보

WSL Bash 명령 줄에서 Windows에서 VSCode시작 하시겠습니까 ?

WSL Ubuntu를위한 그래픽 인터페이스를 원하십니까 ? (이것은 당신이 사용하는 같은 파일에 대한 리눅스 GUI 편집기를 일을 할 수 있습니다 : NPM 섹션에서 주석 / 메모를 참조하지 편집 그들에게 도구를 편집 Windows를 사용합니까 우분투 시스템 자체)

WSL Ubuntu 내 에서 빌드하고 (WSL에 대해 올바르게 VS Code 작업을 설정하는 방법에 대한 위 부분 참조) 완전히 디버깅 하고 싶으십니까? (이것은 gdb를 사용하여 그렇게하는 방법을 보여 주지만 pipeTransport개념은 다른 디버거와 함께 사용할 수 있습니다) ( 이 답변에 대한 크레딧 이지만 이전의 답변 은 유용 할 수있는 로컬 루프백을 사용하는 방법도 제공합니다)


10
좋은 답변 입니다. 새로운 WSL 사용자에게 Windows 앱 및 도구사용하여 Linux 파일을 변경하지 마십시오 라는 알림을 제공하는 것도 유용 합니다. 이것은 놀라운 일이 될 수 있습니다.
데이비드 C. 순위

1
감사합니다! 이것을 본 적이 있는지 확실하지 않지만 Windows PATH가 Bash에 삽입되는 것을 방지하기 위해 만들 수 있는 레지스트리 항목도 있습니다 . 이는 많은 Windows 사용자가 .profile.
Tobias J

3
@ChangQian 그 이유는 64 비트 창이 출시되었을 때 32 비트 프로그램 용 파일 시스템 리디렉터를 추가했기 때문입니다. System32는 64 비트 dll / 소프트웨어 용으로 예약 되었기 때문입니다. 이로 인해 SysWOW64에 액세스하는 대신 System32에 액세스하려는 32 비트 앱이 생성됩니다 (예 : 거꾸로 보입니다). Sysnative는이 문제가 발생하지 않도록 강제하지만 Explorer와 같은 64 비트 소프트웨어 *에는 표시되지 않습니다. : 당신은 프롬프트 32 비트 명령을 사용하여이 예를 볼 수 있습니다 C:\Windows\SysWOW64\cmd.exe실행 dir C:\Windows\Sysnative 64 비트 VSCode에서이 작품은 자동으로 번역하는 코딩 있기 때문에 *
taswyn

2
터미널을로 설정 ubuntu.exe하면 프로젝트 폴더 대신 사용자 폴더에 들어갈 수 있습니다. 이것이 바로 github.com/Microsoft/WSL/issues/2795C:\\Windows\\System32\\wsl.exe 에 따라 터미널을 설정하려는 이유 입니다. 올바른 설치가 시작되는지 확인하는 사용 wslconfig /setdefault Ubuntu합니다.
Bernhard Döbler

1
내가 이것을 썼을 때 WSL이 훨씬 더 잠겨있을 때 (배포판 선택 전)이었습니다. 저는 적어도 Spring Creator 에디션으로 업데이트 된 윈도우를 새로 설치 한 머신을 가지고 있습니다. 그래서 마침내 다양한 ​​댓글에 따라 어떤 개선이 이루어질 수 있는지 곧 확인하고 @Narnia라는 질문에 답해 보겠습니다.
taswyn

4

zsh를 사용하려면 ubuntu1804.exe 또는 ubuntu1604.exe의 경로를 찾으십시오.

나의 경우에는

"terminal.external.windowsExec": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",
"terminal.integrated.shell.windows": "C:\\Users\\asdf\\AppData\\Local\\Microsoft\\WindowsApps\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\ubuntu1804.exe",

1.32 버전의 Visual Studio 코드 및 우분투를 사용하는 WSL에서 잘 작동했습니다. 감사!
Salvador P.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.