1

Я использую Ubuntu из Windows.
Когда я создаю папку из окна с именем newFolder в корневом каталоге
C:\Users\myuser\AppData\Local\lxss\root\Newfolder
затем из Bash, когда я запускаю ls я не вижу новую папку, которая была только что создана.

Как я могу это исправить, чтобы я мог создавать папки и файлы из Windows, а затем получить к ним доступ из Bash?

3 ответа3

3

Вы не можете создавать папки в Ubuntu и получать к ним доступ из Windows. Но вы можете сделать наоборот.

Вы можете получить доступ к дискам Windows в /mnt . Если вы выполните ls /mnt вы увидите все свои диски. Так что /mnt /c - это путь вашего диска C. Точно так же /mnt/c/Users/username/Desktop может предоставить вам доступ к вашему рабочему столу в Bash.

Так что просто перейдите к нужному пути с помощью Bash и получите доступ к файлам и папкам Windows. Для получения более подробной информации о быстром доступе к файлам Windows, используйте символические ссылки, подробности можно найти здесь

2

Файлы Linux в корневой файловой системе WSL создаются специально с разрешениями POSIX, хранящимися в расширенных атрибутах NTFS. Вы можете увидеть это, запустив fsutil file layout lxss\root и заметив там поток $EA . Если вы создаете файлы непосредственно из Windows, вы все испортите, потому что приложения win32 ничего не знают о Linux и его метаданных файлов.

Проблема возникает, когда, например, вы используете приложение / инструмент Windows для открытия, создания и / или изменения файла в корне дистрибутива: поскольку файл был создан с помощью инструмента Windows, в файле не будет метаданных файла Linux (например, разрешения, владелец, метки времени доступа / обновления и т. д.). Таким образом, для Linux (который получает только метаданные файла Linux)файл может быть представлен как пустой, может даже не существовать или иметь некоторые метаданные, но эти метаданные могут не отражать подробности файла, что привело к повреждению содержимого файла.

Поэтому MS смело предупредил, что

Ни при каких обстоятельствах НЕ создавайте и / или не изменяйте файлы Linux с помощью приложений, инструментов, сценариев, консолей и т.д. Для Windows.

Создание / изменение файлов Linux из Windows, вероятно, приведет к повреждению данных и / или повреждению вашей среды Linux, что требует удаления и переустановки вашего дистрибутива!

Не изменяйте файлы Linux с помощью приложений и инструментов Windows

Файлы, имеющие отношение только к Linux, должны создаваться только из WSL. Если вы хотите создать файлы, доступные для обеих систем, то создайте их вне корня WSL и получите доступ из WSL через точку монтирования в /mnt как /mnt/drive/path

Если вы хотите создавать файлы в файловых системах Windows, но сохраняете чувствительность к регистру, используйте

fsutil file setCaseSensitiveInfo <directory name> enable

Этот флаг также можно проверить с fsutil file queryCaseSensitiveInfo <directory name>

1

Инвертируйте свое мышление: если вы хотите создавать файлы с помощью приложений и инструментов 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!

НТН.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .