Linux 개발 환경 용 Windows 서브 시스템에서 파일 편집 Studio 코드와 같은 Windows 기반 GUI 편집기를

Linux 용 Windows 하위 시스템 (WSL)은 대부분의 명령 줄 Linux 도구를 사용하지 않고 수정없이 Windows에서 작업하는 데 매우 효과적입니다. 그러나 원하는 경우 개발이 약간 까다로워집니다.

  • 잘 지원되는 Windows 버전 (Ruby, Node 등)이없는 Linux 툴체인 을 사용하여 프로젝트를 빌드하십시오.
  • Visual Studio 코드와 같은 Windows 기반 GUI 편집기를 사용하여 파일을 편집하십시오 .

문제는 Windows 앱 이 가상 lxss 파일 시스템 내의 파일을 수정할 수 없다는 것 입니다. 이러한 파일을 직접 수정하면 모든 종류의 문제가 발생하는 것으로 알려져 있습니다.

따라서 개발에 WSL을 사용하는 경우 최적이 아닌 두 가지 선택이있는 것 같습니다.

  1. lxss ( /home/foo)에 프로젝트를 저장하십시오 . 정상적인 툴체인이 제대로 작동합니다. 그러나 편집은 터미널 기반 Vim / Emacs 또는 janky X 서버 에서 실행할 수있는 것으로 제한되며 , 이는 Windows에서 실행되는 기본 편집기보다 덜 부드럽습니다.

  2. 프로젝트를 Windows 파일 시스템 ( /mnt/c/Users/foo)에 저장하십시오 . 이제 모든 Windows 기반 편집기를 개발에 사용할 수 있습니다. 그러나 Linux 기반 툴체인은 “네트워크 드라이브”에서 사용하도록 설계되지 않았기 때문에 취약하며 파일 감시 또는 데이터베이스에 문제를 일으킬 수 있습니다 .

여기에서 두 가지 이점을 모두 누릴 수있는 방법이 있습니까? 즉, 기본 Windows 응용 프로그램을 사용하여 편집 할 수 있지만 여전히 로컬 드라이브에서와 마찬가지로 Linux 도구 체인이 작동합니까?



답변

Microsoft는 최근 이에 대한 포괄적 인 지원을 추가했으며 일반적으로 2019 년 4 월 (19H1) 업데이트에서 사용할 수 있습니다. 준비가되면 Linux 배포판이 실행될 때마다 9P 서버가 백그라운드에서 실행됩니다. 9P 서버는 Linux 파일 시스템 메타 데이터를 처리 할 수 ​​있으며 Windows는이를 안전하게 액세스 할 수 있도록 네트워크 드라이브로 취급 할 수 있습니다. https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/ 에서 읽을 수 있습니다 .

새로운 기능을 사용하면 9P 서버를 거치는 한 Windows에서 Windows 및 Linux 파일 시스템 파일 모두에 안전하게 액세스 할 수 있습니다. 이것은 WSL 내에서 기본적으로 처리됩니다. 예를 들어 WSL 명령 줄에서 입력 code /mnt/c/Users/username/src/windows-file.txt하여 VS 코드에서 Windows 파일 code /home/username/src/linux-file.txt을 열거 나 입력 하여 VS 코드에서 Linux 파일을 열 수 있습니다.

Windows 참가자 프로그램에 속하지 않은 경우 아직이 프로그램에 액세스 할 수 없으므로 wslpath와 같은 이전 방법을 사용해야합니다.

wslpath는 Windows 및 Linux 스타일 경로를 변환하므로 WSL 명령 행에서 Windows 파일을 쉽게 열 수 있습니다. 당으로 https://github.com/Microsoft/WSL/issues/3146#issuecomment-388118689 , 그것은 리눅스 파일 시스템 경로를 변환하기를 거부한다 (예 %의 AppData % \ lxss), 9P없이 윈도우에서 이러한 파일을 수정하는 데 안전하지 않은 때문에 . 즉 /home/username/src/linux-file.txt, 열 수는 없지만 사용할 수는 있습니다 code "$(wslpath -aw /mnt/c/Users/username/src/windows-file.txt)".

과거에는 동일한 변환을 수행하는 많은 타사 도구가 있었지만 wslpath는 기본적으로이를 수행하지만 실제로 ls -l /bin/wslpath는 / init에 대한 링크 일뿐입니다.


답변

저보다 똑똑한 사람들이이 질문을 본 것 같습니다. 그러나 나는 대답 할 것이다. 나는 정답이 현재 아니오라고 믿습니다. 당신이 언급 한 것 이외의 두 세계를 모두 얻는 더 좋은 방법이 있습니다 (내가 아는 것).

나는 그것이 누군가가 원하는 대답이 아니라고 확신하지만 그것이 정답이라고 생각합니다. 나는 그것이 Microsoft가 더 매끄럽게하려고 노력하고 있지만 아직 거기에 있지 않다는 것을 알고 있습니다.


답변

2018 년 상반기에 Microsoft는 이러한 문제 중 일부를 해결하기 위해 WSL에 대한 몇 가지 개선 사항을 발표했습니다.

이들 중 어느 것도 내 원래 질문의 문제를 완전히 해결하지는 못하지만 특정 사례에서는 유용성을 향상시킬 수 있습니다.


답변

Linux 명령을 실행하고 Windows 편집기를 사용하여 편집하려는 경우 파일 시스템의 어딘가 (c : \ source \와 같은) 소스 코드 (편집하고 테스트하려는)를 보유하고 / mnt / c / source를 통해 Linux 콘솔에서 액세스 할 수 있습니다. 도움이 되었기를 바랍니다.


답변

이제 Visual Studio Code가 지원합니다 (사용하고 있습니다). Linux 위치에서 CRUD (만들기, 읽기, 업데이트, 삭제) 파일 / 폴더를 수행 할 수있는 “WSL 확장명” 나는 여전히 atom에 대해 동일한 설정을 얻는 데 어려움을 겪고 있지만 Linux 플랫폼에서 Rails 응용 프로그램 개발을 위해 선택한 편집기였습니다.


답변