Perché, quando creo un file da Windows, ad esempio, non riesco a vederlo nel sottosistema Linux in Windows 10 (bash.exe)
Lo screenshot dovrebbe spiegare.
Cartella: OMG è stato creato da Esplora risorse. La cartella OMGBash è stata creata con il sottosistema Linux bash.exe
Quando un file OR di una cartella viene creato al di fuori di bash.exe non riesco mai a vederlo, indipendentemente dalle autorizzazioni e dalla proprietà.
Per mostrare le informazioni che ho dovuto usare Cygwin per mostrare le autorizzazioni dei file, ho anche modificato le autorizzazioni per vedere se la cartella sarebbe apparsa. (Le due finestre di comando in basso)
Schermata che mostra i permessi di cartella, bash.exe e Cygwin:
Sto cercando di spostare tutti i miei script Cygwin sul sottosistema Linux, ma non mi va di ricreare ogni file, quindi dover copiare e incollare usando bash, quindi riformattare e poi usare Dos2unix (molto lungo).
Trovato su GitHub per il sottosistema Linux:
la copia diretta nel sottosistema Linux da Windows non è supportata, in base alla discussione su altri ticket. C'è una directory sotto AppData da qualche parte (dimentico dove) che sembra contenere i file per il filesystem WSL. Ma se si inseriscono nuovi file lì o si modificano file esistenti lì, le modifiche non si riflettono correttamente in WSL.
La mia ipotesi migliore è che Linux debba archiviare metadati diversi (e più informazioni di memorizzazione nella cache, ecc., Poiché anche il suo modello di buffering del disco è diverso) sui suoi file rispetto a Windows, e che questo è attualmente implementato memorizzando la copia principale della struttura del filesystem Linux in un database di qualche tipo, e semplicemente usando il filesystem di Windows come conveniente archivio BLOB per quel database.
Se hai davvero bisogno di fare questo, una soluzione alternativa sarebbe quella di scrivere uno script .bat drag'n'drop o somesuch che fa bash.exe -c "mv% 1 / home / $ USER /". (Dovrai fare un lavoro intelligente con sed e tr, probabilmente, per tradurre% 1 in un percorso WSL valido.)
In alternativa, potresti mettere i tuoi file in una directory di Windows e, all'interno di WSL, fare "cd ~; ln -s / mnt / c / path / to / my / files" per farli apparire nel tuo homedir WSL?
cp -r --no-preserve=all
eliminare le autorizzazioni precedenti. Tuttavia, se si desidera apportare modifiche pesanti, non è possibile utilizzare un'applicazione Windows per modificare il file nel LinuxSubSystem, è necessario modificarlo nella directory di Windows e copiarlo. Ora lo so, è fattibile, ma avevo l'impressione che il sottosistema Linux fosse più nativo / integrato in Windows di un sistema operativo isolato
%LocalAppData%\Packages\<some-long-name-of-distro>\LocalState\rootfs
.