我已经在Windows 10上安装了Ubuntu子系统(启用设置中的功能之后),但是驱动器中的Ubuntu文件系统根目录在哪里?

评论

请注意,我们(WSL团队)强烈建议您不要将其存入Linux发行数据文件夹中。如果这样做,极有可能发生数据丢失和/或损坏的情况,我们正在努力改善这种互操作方案,并将在我们的博客上宣布任何进展:blogs.msdn.microsoft.com/commandline

@RichTurner我发现有一个非常具体的(令人讨厌的)原因-公司策略反复用错误的权限标记.ssh文件夹意味着需要将结构标记为公司脚本的“禁止访问”。但总的来说-我会同意你的看法。

尽管它看起来像是具有最新更新的盒子,但这种情况不再发生。

@DannyStaple如果您需要从Windows更改Linux发行版中文件/文件夹的权限,请使用wsl.exe,例如wsl chmod 600〜/ .ssh / id *-不要通过Windows文件系统将文件复制到这些文件夹中。

@mehrdad WSL实现了一个P9文件服务器,就像任何P9文件服务器一样,从发行版的文件系统公开/编组文件。这样,就无需封送NTFS元数据。请观看Build 2919上的Craig Loewen和Ben Hillis的会议,以了解更多信息

#1 楼

对于从Windows商店安装的Ubuntu:


通过商店安装的每个发行版都安装到该应用程序的appdata目录中。例如:
C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState-benhillis


对于WSL2,您可以从Windows(Windows 10 build 18342)访问主目录,如下所示:

\wsl$


在Linux的Windows子系统的早期版本中,Ubuntu文件系统位于%localappdata%\Lxss(例如,C:\Users\Username\AppData\Local\Lxss-用Windows上的用户名替换用户名)。请参阅有关文件系统支持的WSL博客文章:


WSL使用的主要文件系统是VolF。它用于存储Linux系统文件以及Linux home目录的内容。因此,VolF支持Linux VFS提供的大多数功能,包括Linux权限,符号链接,FIFO,套接字,
和设备文件。

VolF用于挂载VFS。根目录,使用
%LocalAppData%\lxss\rootfs作为后备存储。此外,还存在几个额外的VolF安装点,最值得注意的是分别使用/root
/home安装的%LocalAppData%\lxss\root
%LocalAppData%\lxss\home。这些单独的
挂载的原因是,当您卸载WSL时,默认情况下不会删除主目录
,因此存储在其中的所有个人文件都将被保留。

/>
注意

使用Windows应用程序和工具在Linux子系统中创建/修改任何文件都可能导致Ubuntu子系统中的数据损坏和数据丢失! (感谢Rich Turner建议使用这些警告语!)绝对不支持此操作。来自同一篇博客:


与Windows的互操作性

虽然VolFs文件存储在Windows上面提到的
目录中的常规文件中,但互操作性Windows不支持
。如果将新文件从
添加到这些目录之一Windows,它缺少VolF所需的EA,因此VolF不知道如何处理该文件,而只是忽略了它。保存现有文件时,许多编辑器还会
删除EA,从而再次使文件
在WSL中不可用。



您的Windows文件系统是位于Bash shell环境中的/mnt/c



来源:Dustin Kirkland的博客,howtogeek

评论


Lxss隐藏在我的文件系统中……导致一两分钟的头部刮伤。现在,我已经创建了一个快捷方式,但是我似乎仍然无法取消隐藏它。

– Ogaday
16年6月16日在14:04

@Ogaday,您无法使用属性窗口取消隐藏它,因为它被标记为系统目录。您可以使用attrib -s -h lxss取消隐藏它,也将其取消标记为系统目录。

–developerbmw
16年8月3日,10:59



由于我所在的位置不同,系统之间的位置似乎已更改或有所不同。我已在下面发布了我的位置。

– NicholasJohn16
16年8月10日在18:36

@souravc您能否在答案顶部添加一个重要说明,强烈建议您不要使用Windows应用程序和工具在LXSS中创建/修改任何文件:如果这样做,很可能会损坏和丢失数据!

– Rich Turner
16年7月7日在23:16

请阅读上述文章:blogs.msdn.microsoft.com/commandline/2016/11/17/…。从WSL访问Windows文件系统是安全的,这就是为什么我们将驱动器挂载在/ mnt / /下,但是从Windows访问Linux文件系统还不安全的原因,这就是为什么我们不能轻松访问Windows文件系统。发行文件系统。

– Rich Turner
17年11月14日在18:32

#2 楼

自从最初引入Bash以来,这似乎已经发生了变化,并且不适用于Windows应用商店中的发行版,或者由于我的主目录位于另一个位置,因此它不适用于所有系统:

%localappdata%\lxss\home\{username}


或:

C:\Users\{user}\AppData\Local\lxss\{username}


其中{user}是Windows用户名,{username}是在安装过程中设置的UNIX用户名。

因此,根目录将是:

%localappdata%\lxss


请注意,根目录在Windows资源管理器中从%localappdata%目录可能不可见。无论如何,只要在资源管理器的“地址栏”中键入它即可访问它。

评论


我的机器找不到:“ C:\ Users \ {用户} \ AppData \ Local \ Lxss \ {用户名}”或“%localappdata%\ Lxss \ home \ {用户名}”,但是“ C:\ Users \ {用户} \ AppData \ Local \ lxss \ {用户名}”起作用。即使用“ lxss”而不是“ Lxss”

– Joe Codeswell user601770
16年8月17日在15:52

我的系统具有rootfs子目录,但是rootfs / home为空,而./home具有我的用户帐户和文件。似乎最安全的方法是直接转到%localappdata%\ lxss,然后从那里浏览以查看具有哪种布局,再直接浏览到该地址可以避免lxss目录被隐藏的问题。

– jla
16年1月1日在16:07

@ JoeCodeswelluser601770这很奇怪。 Windows文件系统通常不区分大小写。我可以输入%localappdata%\ Lxss或%localappdata%\ lxss,然后都转到%HOMEPATH%\ AppData \ Local \ lxss

– jla
16年1月1日,16:10

请注意,即使启用了隐藏文件夹视图,此文件夹(lxss)也不会出现在Windows资源管理器的AppData \ Local文件夹列表中。我必须手动将文件夹lxss添加到资源管理器栏中才能在此处找到文件。编辑文件夹“ URL”到那里

–科林D
16 Dec 20 '20:52

或者,您可以转到桌面,右键单击“新建->快捷方式”,然后粘贴一个路径,例如C:\ Users \ yourname \ AppData \ Local \ lxss \ home \ yourname

–科林D
16 Dec 20'在20:57

#3 楼

如果您从MS Market安装Linux:


Windows商店中的免费Ubuntu
Windows商店中的免费Open Suse

它们将发行版放在以下位置:

$ cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/\{861c29b4-ebe2-49a5-8a22-7e53a27934a0\}/BasePath
C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState


默认发行版定义为:

bash# cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/DefaultDistribution
{861c29b4-ebe2-49a5-8a22-7e53a27934a0}


Linux根更深:

c:/Users/user/AppData/Local/Packages/46932SUSE.openSUSELeap42.2_022rs5jcyhyac/LocalState/rootfs


PS。我使用Cygwin探索注册表项。

如果将PowerShell用于同一目标,则命令为:

# obtain the value of the ID of the default Linux distribution (and store it in a variable to avoid escaping characters issues):
$DEFAULT_LXSS_ID = (Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\ -name DefaultDistribution)

# which will have a value like:
echo  $DEFAULT_LXSS_ID
{bde539d6-0c87-4e12-9599-1dcd623fbf07}

# display the directory containing the rootfs Windows directory (mapped to the / Linux directory)
Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss$DEFAULT_LXSS_ID -name BasePath | Format-List -property "BasePath"
%LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState


PPS。 https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

评论


注意到“ [您使用Cygwin探索注册表项”,这使它变得更有用了(对于更多种不同的情况),这真是太好了。

–bballdave025
9月29日18:26

#4 楼

唯一对我有用的是%localappdata%\lxss\home\{username},其中{username}是您在安装过程中提供的BASH用户名。由于某些原因,在显示隐藏文件夹的lxss后,它拒绝出现在C:\Users\WINDOWS-USER\AppData\Local\中,并且也没有给出带有Windows和BASH用户名的完整C:\路径。

请创建一个桌面快捷方式以解决问题。

评论


哇好提示,有同样的问题

–尼古拉斯·莫默斯
18年2月19日在12:08

#5 楼

您可以通过在位置栏中键入bash从打开的文件夹的“文件资源管理器”窗口中快速打开Bash。

就足够了。

还可以添加上下文菜单项。我个人不建议不要使用它,因为在上下文菜单中添加快捷方式会占用更多RAM。

https://www.howtogeek.com/270810/how-to-quickly-launch- a-bash-shell-from-windows-10s-file-explorer /

评论


对我不起作用。它打开命令提示符并启动bash。

–blablatros
17年5月28日在19:38

@blablatros是的,但是在浏览器栏bash中编写并按Enter时,在女巫中bash的文件夹中打开了资源管理器。尝试在“我的文档”文件夹中打开Windows资源管理器文件夹,并在位置栏中输入bash,它将已经在该文件夹中打开ubuntu bash :)

–袋鼠
17年6月17日在2:24

@Kangarooo:我想通过Windows 10 gui访问文件,反之亦然。在上面的答案中,我发现了如何通过Windows 10文件浏览器找到bash目录,因此我着手将一些文件从外部硬盘驱动器复制到该目录中。但是,当我打开bash终端并按ls -a时,它没有显示我添加的文件。 Bash无法识别我通过Windows文件资源管理器放入的文件,对我而言,这完全击败了在Windows上安装Bash的目的。

– thinksinbinary
17-6-25在14:00



#6 楼

对于正在寻找映像位置的用户:
C:\ Users \ [用户名] \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ ext4.vhdx