Development Tip

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

yourdevel 2020. 10. 4. 13:33
반응형

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


다른 질문 은 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?


이 답변은 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 패키지가 필요합니다.

Currently, WSL does not come loaded with everything you might expect or be used to having, and some things can conflict with software you have loaded in Windows, based on default profile settings.

Updates & git

Note: I'm going to document these as sudo for people who simply need single pieces of this, but one option at the start is to instead sudo su and simply running the following commands without sudo.

Make sure your Ubuntu packages are up to date:

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

Install git:

sudo apt-get install git

Node.js & NPM

If you already have Node or NPM loaded in Windows, running them in Ubuntu can get problematic due to path issues. So, you need to install the Ubuntu native versions and ensure that they are used instead.

First, install node.js with NPM. (alternate: install NVM and use it to install node.js)

After installing, running npm commands will probably fail: for example, npm -v will probably give you:

: 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")

This is due to a pathing issue with a fairly straightforward solution. Using your favorite CLI editor (such as nano, vim, emacs, cat and sed… etc), open your ~/.profile

nano ~/.profile

Note: do NOT attempt to edit Linux files using Windows tools. (Thanks to @david-c-rankin's comment for the official link with the bold red text explaining this) If you don't want to use a CLI editor for this in the terminal, see the bottom of this post for a link on how to get a GUI one running.

Currently, the default bash PATH variable in WSL is

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

Which is injecting the windows path after the first two binary directories. Unfortunately, this doesn't result in /usr/bin being used before the windows installed npm, so add that before the final $PATH:

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

Save out, and then either reload the terminal or just source the path file

source ~/.profile

Build-essential

If you are using anything which requires compiling or otherwise uses make, it's almost guaranteed that you will need these installed; so if you did not install them while installing node.js, do so. It's much easier to simply use the build-essential package rather than try to install everything separately.

Note that packages such as Compass which rely on Ruby FFI will fail without these. If you are having trouble properly installing and running a tool, making sure you have gcc and make installed can be a good place to start.

sudo apt-get install -y build-essential

Running Tasks using Ubuntu

Note that if you use VS Code's tasks.json to run build tasks, by default it will still run them using the Windows subsystem instead of the Ubuntu one. Sometimes this may be what you want, but if you've just finished installing grunt-cli in Ubuntu and not Windows, it's probably not.

VS Code recently had the 2017 May update to how Tasks work that allows it to set the task runner as the terminal. This is by far the easiest way to migrate tasks over.

Simply set

"runner": "terminal",

in your tasks.json and you're done (assuming you have all of the appropriate tools you are trying to run now installed in WSL Ubuntu).여기에 이미지 설명 입력

This is very portable, ideally requiring no changes between systems which do or do not have WSL, or to other OSes, and is the method I would recommend.

As of the moment, this method spawns another TERMINAL tab instance (accessed from the drop down). You can still set up appropriate watchers, but it does mean that it's no longer sitting on the OUTPUT tab.

The old method is capable of invoking the WSL Ubunutu Bash shell and having it show up in OUTPUT, and involves either calling bash.exe with the -c argument or using a shell script. It unfortunately is not as semantic, since we are making bash our command and passing it what we want to run as an argument instead. This also means it is not as quickly portable to other systems.

You can use the same location you gave VS Code earlier for the terminal itself, C:\\WINDOWS\\Sysnative\\bash.exe as the value for command여기에 이미지 설명 입력

Set the first element of the args array as -c and the second as the command you want to run (credit to the second half of this answer).

Alternatively, you can instead run a shell script as seen here.

Further helpful bits

Want to start VSCode in Windows from the WSL Bash command line?

Want to have a graphical interface for your WSL Ubuntu? (this will allow you to do things like use a Linux GUI editor for files within the Ubuntu system itself: do not edit them using Windows editing tools, see comments/note in section on npm)

Want to build (see the above portion on setting up VS Code Tasks properly for WSL) and debug entirely within WSL Ubuntu? (this shows how to do so using gdb, but the pipeTransport concept could be used with other debuggers) (credit to this answer, but the one before it also provides a method using local loopback that could prove useful)


if you want to use zsh, find path of ubuntu1804.exe or 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",

이제 Microsoft의 WSL 확장 .

참고 URL : https://stackoverflow.com/questions/44450218/how-do-i-use-bash-on-ubuntu-on-windows-wsl-for-my-vs-code-terminal

반응형