Windows의 Bash에서 Unix와 같은 경로를 사용하려면 어떻게해야합니까? 이진 파일 일 수 있습니다.

msys2에 익숙하지 않은 사용자를 위해 Windows 용 * nix 프로그램의 포트입니다. 거기서 다음과 같은 일을 할 수 있습니다.

$ some-prog ~/.profile
$ some-prog /c/Windows/System32/drivers/etc/hosts

some-prog일반 Windows 프로그램이든 msys2의 컴파일러로 컴파일 된 프로그램이든 관계없이 모든 이진 파일 일 수 있습니다. 경로는 투명하게 변환되어 msys2의 일부가 아닌 프로그램으로 작업 할 때에도 매우 뛰어난 느낌을줍니다.

현재 WSL / “Bash on Windows”(Creators Update)를 확인하고 있는데 문제가있는 것 같습니다.

Linux 프로그램의 경우 모든 것이 잘 작동합니다.

~ $ nano ~/.

예상대로 nano는의 내용으로 열립니다 ~/.profile.

그래도 Windows 프로그램을 호출하려고 할 때 오류가 있습니다.

~ $ "/mnt/c/Program Files/Sublime Text 3/subl.exe" ~/.profile
Unable to translate current working directory. Using C:\Users\Admin

그리고 C:\home\<wsl_username>\.profileSublime Text로 열리지 만 실제 파일은이어야합니다 %localappdata%\lxss\home\<wsl_username>\.profile.

Windows 경로도 좋지 않습니다.

~ $ "/mnt/c/Program Files/Sublime Text 3/subl.exe" /mnt/c/Windows/System32/drivers/etc/hosts
Unable to translate current working directory. Using C:\Users\Admin

C:\mnt\c\Windows\System32\drivers\etc\hosts다시 열립니다 . 다시 잘못된 경로입니다.

WSL에서 올바른 msys2와 같은 경로 통합을 수행 할 수있는 방법이 있습니까?



답변

cygpathCygwin 의 라인을 따라 무언가가 필요합니다 . 불행히도 아직 WSL에 대한 포트가 없습니다 … 그러면 다음을 실행할 수 있습니다.

cd /
notepad.exe $(cygpath /etc/hosts)

현재 가장 가까운 대체 cygpath프로그램은 win2lin.exe라는 redit 에 게시 된 작은 프로그램 입니다.

다른 참조를 위해 Atom (텍스트 편집기)이 최신 버전 인 atom.sh에 포함시킨 쉘 스크립트를 볼 수 있습니다 .

또는 nodejs를 사용하고 사용자 이름을 하드 코딩하지 않아도되는 경우 다음을 작성할 수 있습니다.

var p = require("path")
var path = "C:\\Users\\me\\Desktop"
var sepa = path.split(p.win32.sep)
var newS = [].concat([sepa[0].toLowerCase()], sepa.slice(1))
var newP = "/mnt/" + p.posix.join.apply(p.posix, newS).replace(":", "")
// newP == "/mnt/c/Users/me/Desktop

현재 가장 쉬운 해결 방법은 사용하려는 Windows 바이너리가 경로에 있는지 확인하는 것입니다 (.exe에 대한 심볼릭 링크를 사용하여 경로를 깨끗하게 유지) 및 / mnt / c / PathToFileYouWantToEdit로 cd 다음과 같이 프로그램을 실행하십시오 atom.exe myExampleFile.

cd /mnt/c/Some/Path
notepad.exe SomeFile

WSL 내부에 있지만 외부에 액세스 할 수없는 (WSL의 / mnt 외부에있는 모든 파일) 파일을 편집하는 것이 가장 쉬운 방법은 WSL 내부에 WebDAV 서버를 설치하여 r / w가 /에 액세스하고 해당 WebDAV 서버를 윈도우 드라이브 문자.


답변