У меня возникла проблема с Bash в Ubuntu в Windows: когда я редактировал файл, расположенный в моем домашнем каталоге Bash C:\Users\me\AppData\Local\lxss\home\me\, с использованием некоторых программ для Windows (notepad++ пример), Bash больше не видит файл.

Поэтому, если я создаю файл в своем домашнем каталоге с помощью Bash, а затем редактирую тот же файл с помощью Windows, Bash его больше не видит. То же самое с копированием-вставкой файла из Windows в домашний каталог, Bash не видит его.

Есть ли способ сделать эти файлы видимыми для Bash?

PS Файлы и изменения в каталогах Windows всегда видны из Bash через /mnt /c /... и остаются видимыми после редактирования и перемещения файлов.

1 ответ1

1

Простейшим решением было бы скопировать файлы в другой каталог перед редактированием и скопировать их в исходное местоположение после редактирования.

Взгляните на этот вопрос: Подсистема Windows Linux - Доступ к файлам вне Ubuntu

Он имеет ссылку на проект GitHub для проекта BashOnWindows . В частности, Issue 402 или, более конкретно, этот комментарий, который гласит:

@ducminhnguyen - копирование непосредственно в подсистему Linux из Windows не поддерживается, согласно обсуждению других заявок. Где-то в AppData есть каталог (я забыл, где), который содержит файлы для файловой системы WSL. Но если вы поместите туда новые файлы или измените существующие файлы, ваши изменения не будут правильно отражены в WSL.

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

Если вам действительно нужно это сделать, обходной путь - написать сценарий drag'n'drop .bat или что-нибудь подобное, выполняющее bash.exe -c "mv% 1 /home /$ USER /". (Вам придется проделать некоторую умную работу с sed и tr, возможно, чтобы перевести% 1 в правильный путь WSL.)

В качестве альтернативы - не могли бы вы поместить свои файлы в каталог Windows и в WSL сделать «cd ~; ln -s /mnt /c /path /to /my /files», чтобы они оказались в вашем домашнем каталоге WSL?

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