Почему, например, когда я создаю файл из Windows, я не вижу его в подсистеме Linux в Windows 10 (bash.exe)
Скриншот должен объяснить.
Папка: OMG был создан из Windows Explorer. Папка OMGBash была создана из подсистемы Linux bash.exe
Когда папка ИЛИ файл создается вне bash.exe, я никогда не вижу его, независимо от прав доступа и владельца.
Чтобы показать информацию, которую мне пришлось использовать Cygwin, чтобы показать права доступа к файлам, я также изменил разрешения, чтобы увидеть, появится ли папка. (Два командных окна внизу)
Снимок экрана, показывающий права доступа к папке, bash.exe и Cygwin:
Я пытаюсь переместить все свои скрипты Cygwin в подсистему Linux, но мне не хочется пересоздавать каждый файл, затем копировать и переносить с помощью bash, а затем переформатировать, а затем с помощью Dos2unix (очень длинный).
Нашел это на GitHub для подсистемы Linux:
копирование непосредственно в подсистему 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?
источник
cp -r --no-preserve=all
удалить предыдущие разрешения. Тем не менее, если вы хотите внести какие-либо серьезные изменения, вы не можете использовать приложение Windows для редактирования файла в LinuxSubSystem, вы должны отредактировать его в вашем каталоге Windows, а затем скопировать его. Теперь я знаю это, его работоспособность, НО у меня сложилось впечатление, что подсистема Linux была более встроенной / встроенной в Windows, чем изолированная ОС%LocalAppData%\Packages\<some-long-name-of-distro>\LocalState\rootfs
.Ответы:
Я не уверен, правильно ли я понял ваш вопрос, но ваш ubuntu bash (верхнее правое окно) должен иметь доступ к дискам под Windows
/mnt
. Например, на моей машине/mnt/c/Users/Scott/Desktop
установлен мой рабочий стол Windows, и я могу читать / записывать туда файлы из vi, например. Я не верю, что все наоборот. То есть я не думаю, что вы можете исследовать свой мир bash из проводника Windows.Как разработчик я занимаюсь размещением проектов на моем d: и указываю инструменты на основе linux на эту
/mnt/d/projects/someproject/
папку.Убедитесь, что вы периодически обновляете свои сборки Windows, так как они, похоже, решают множество проблем с каждой сборкой, особенно вокруг символических ссылок и пересечения границ FS между Linux / Windows.
источник
@ scottt732 прекрасно ответил.
Просто совет для разработчиков, которые будут работать в Windows и хотели бы получить быстрый доступ к этим файлам в подсистеме Linux. Вы можете использовать символические ссылки .
Например, если вы работаете над проектом в
d:/projects/web-project
, вы можете создать символическую ссылку на месте,/var/www/web-project
и все файлы, которые вы изменяете в окнах, будут легко доступны для доступа в Linux Bash.Для этого вы будете использовать
ln
команду, как этоВ приведенной выше строке
/mnt/d
должен был быть ваш диск на Windows. Настройте виртуальный хост Apache по этому пути, и вы готовы к работе.источник
css-file.css
,. Я написал об этой проблеме здесь .Мы рекомендуем вам не копировать / создавать / обновлять файлы Linux с помощью приложений Windows .
Вместо этого храните файлы в файловой системе Windows (например
c:\dev\project
), для которой вы хотите редактировать файлы с помощью инструментов Windows и / или собирать / тестировать / запускать с помощью инструментов Linux / среды выполнения / платформ (например, через/mnt/c/dev/project
).В вашем конкретном случае, если вы хотите скопировать файлы Cygwin в Bash, затем откройте Bash и копировать файлы из папки Cygwin на C: в
~/
, как это:cp /mnt/c/Users/dave/Documents/Cygwin/* ~/
)НТН.
источник
Мне нужно было работать с PyCharm / eclipse в Windows 10, а для запуска / testind мне требовалась среда Linux;
У меня были проблемы с извлечением из git в подсистему Linux, и редактирование с помощью файлов PyCharm не было обнаружено сразу, и были проблемы;
У меня было выше в моем .bashrc в области Ubuntu. Это работает без проблем. Я мог редактировать Windows и запускать / тестировать в Ubuntu без каких-либо проблем.
источник
У меня была похожая необходимость копировать файлы между WSL и win10. Я закончил тем, что включил sshd в Ubuntu-инсталляции, чтобы я мог ssh в Linux с win10. Затем я использую winscp для копирования файлов туда и обратно. Не оптимально, но я не копирую файлы очень часто. Я попытался найти сообщение, которое использовал для включения sshd, но не могу найти его.
источник