업데이트:

업데이트:

Windows에서 Ubuntu를 실행하고 있습니다.

newFolderWindows에서 루트 디렉터리에 호출된 폴더를 생성한 C:\Users\myuser\AppData\Local\lxss\root\Newfolder다음 Bash에서 실행할 때 ls방금 생성된 새 폴더가 표시되지 않습니다.

Windows에서 폴더와 파일을 생성한 다음 Bash에서 액세스할 수 있도록 이 문제를 해결하려면 어떻게 해야 합니까?

답변1

업데이트:

Windows 10 버전 1903부터 \\wsl$\. 따라서 explorer.exe .bash에서 실행하거나 \\wsl$\Explorer의 주소 표시줄에 직접 입력할 수 있습니다.

보다Windows 10 버전 1903의 WSL의 새로운 기능은 무엇인가요?

다시 한 번 경고가 표시됩니다.AppData 폴더를 통해 Linux 파일에 액세스하면 안 됩니다!

이전 버전의 Windows 10에 대해서는 아래를 참조하세요.


WSL 루트 파일 시스템의 Linux 파일은 NTFS 확장 속성에 저장된 POSIX 권한을 사용하여 특별히 생성됩니다. 실행하여 이를 fsutil file layout lxss\root확인할 수 있습니다.$EA개울거기. Windows에서 직접 파일을 생성하면 win32 앱이 Linux 및 해당 파일 메타데이터에 대해 아무것도 모르기 때문에 문제가 발생할 수 있습니다.

예를 들어 Windows 앱/도구를 사용하여 distro 루트에서 파일을 열거나 생성 및/또는 수정하는 경우 문제가 발생합니다. 파일이 Windows 도구를 사용하여 생성되었으므로 파일에 Linux 파일 메타데이터가 없습니다. (예: 권한, 소유자, 액세스/업데이트 타임스탬프 등) 따라서 Linux(Linux 파일 메타데이터만 수신)의 경우,파일이 비어 있는 것으로 보고될 수 있습니다., 존재하지 않거나 일부 메타데이터가 있을 수 있지만 해당 메타데이터가 파일의 세부정보를 반영하지 않아 파일 내용이 손상될 수 있습니다..

그래서 MS는 다음과 같이 과감하게 경고했습니다.

어떠한 경우에도 Windows 앱, 도구, 스크립트, 콘솔 등을 사용하여 Linux 파일을 생성 및/또는 수정하지 마십시오.

Windows에서 Linux 파일을 생성/변경하면 데이터가 손상되거나 Linux 환경이 손상되어 distro를 제거하고 다시 설치해야 할 수 있습니다!

Windows 앱 및 도구를 사용하여 Linux 파일을 변경하지 마십시오.

Linux에만 관련된 파일은 WSL에서만 생성해야 합니다. 두 시스템 모두에 액세스할 수 있는 파일을 생성하려면 해당 파일을 생성하십시오.WSL 루트 외부/mnt다음과 같은 마운트 지점을 통해 WSL에서 액세스합니다./mnt/drive/path

Windows 파일 시스템에서 파일을 생성하지만 대소문자 구분을 유지하려면 다음을 사용하십시오.

fsutil file setCaseSensitiveInfo <directory name> enable

플래그는 다음으로도 확인할 수 있습니다.fsutil file queryCaseSensitiveInfo <directory name>

또한보십시오Windows 10 WSL에서 Linux/Ubuntu 파일에 액세스하는 방법은 무엇입니까?

답변2

Ubuntu에서는 폴더를 생성하고 Windows에서 해당 폴더에 액세스할 수 없습니다. 하지만 반대로 할 수도 있습니다.

에서 Windows 드라이브에 액세스할 수 있습니다 /mnt. 그렇게 하면 ls /mnt모든 드라이브가 표시됩니다. 따라서 /mnt/c는 C 드라이브의 경로입니다. 마찬가지로 /mnt/c/Users/username/DesktopBash에서 데스크탑에 대한 액세스를 제공할 수 있습니다.

따라서 Bash를 사용하여 원하는 경로에 도달하고 Windows 파일 및 폴더에 액세스하면 됩니다. Windows 파일에 빠르게 액세스하는 방법에 대한 자세한 내용을 보려면 심볼릭 링크를 사용하세요. 자세한 내용은여기에서 발견

답변3

생각을 바꾸세요. Windows 앱 및 도구를 사용하여 파일을 만들고 Bash에서 액세스하려면 Windows 파일 시스템에서 해당 파일 등을 만들고 Bash에서 액세스/복사하세요.

다음은 PowerShell에서 파일을 생성한 다음 Bash를 호출하여 생성된 파일을 홈 폴더에 복사한 다음 bash를 호출하여 파일 내용을 쓰는 예입니다.

PS C:\dev\temp> Set-Content ./hello.txt -Value "Hello, World!" -Encoding ASCII
PS C:\dev\temp> cat .\hello.txt
Hello, World!
PS C:\dev\temp> bash -c "cp /mnt/c/dev/temp/hello.txt ~/"
PS C:\dev\temp> bash -c "cat /mnt/c/dev/temp/hello.txt"
Hello, World!

HTH.

관련 정보