我已在Windows 10上安装了Ubuntu子系统(在设置中启用了功能之后),但是驱动器中Ubuntu文件系统的根目录在哪里?
wsl.exe
,例如wsl chmod 600 ~/.ssh/id*
-不要不通过Windows文件系统中的文件复制到这些文件夹。
我已在Windows 10上安装了Ubuntu子系统(在设置中启用了功能之后),但是驱动器中Ubuntu文件系统的根目录在哪里?
wsl.exe
,例如wsl chmod 600 ~/.ssh/id*
-不要不通过Windows文件系统中的文件复制到这些文件夹。
Answers:
对于从Windows应用商店安装的Ubuntu:
您通过商店安装的每个发行版都安装到该应用程序的appdata目录中。例如:
C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
-benhillis
在用于Linux的Windows子系统的较早版本中,Ubuntu文件系统位于%localappdata%\Lxss
(例如C:\Users\Username\AppData\Local\Lxss
- 在Windows上用您的用户名替换用户名)。请参阅有关文件系统支持的WSL博客文章:
WSL使用的主要文件系统是VolF。它用于存储Linux系统文件以及Linux主目录的内容。因此,VolF支持Linux VFS提供的大多数功能,包括Linux权限,符号链接,FIFO,套接字和设备文件。
VolFs用于挂载VFS根目录,
%LocalAppData%\lxss\rootfs
用作后备存储。另外,一些附加的volfs的安装点存在,最显着/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文件系统位于/mnt/c
Bash Shell环境中。
attrib -s -h lxss
,也可以将其取消标记为系统目录。
/mnt/<drive>/
,但是从Windows访问Linux文件系统是不安全的(这就是为什么)我们不能提供对发行版文件系统的轻松访问。
自从最初引入Bash以来,这似乎已经发生了变化,并且不适用于Windows应用商店中的发行版,或者由于我的主目录位于另一个位置,因此对于所有系统而言,这可能并不一致:
%localappdata%\lxss\home\{username}
要么:
C:\Users\{user}\AppData\Local\lxss\{username}
{user}
Windows用户名和{username}
安装过程中设置的UNIX用户名在哪里。
因此,根目录为:
%localappdata%\lxss
请注意,根目录在Windows资源管理器中可能无法从该%localappdata%
目录看到。您仍然可以通过在资源管理器的“地址栏”中键入它来对其进行访问。
如果从MS Market安装Linux:
他们将发行版放在以下位置:
$ 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
唯一对我有用的是%localappdata%\lxss\home\{username}
,其中{username}
是您在安装过程中为其输入的BASH用户名。由于某种原因,显示隐藏文件夹的lxss后拒绝出现在中C:\Users\WINDOWS-USER\AppData\Local\
,并且C:\
使用Windows和BASH用户名给出完整路径也不起作用。
并请创建一个适用于桌面的快捷方式。
您可以通过bash
在位置栏中键入来从打开的文件夹的“文件资源管理器”窗口中快速打开Bash 。
够了
您也可以添加上下文菜单项。我个人不建议不要使用它,因为在快捷菜单中添加快捷方式会占用更多RAM。
https://www.howtogeek.com/270810/how-to-quickly-launch-a-bash-shell-from-windows-10s-file-explorer/
ls -a
,它没有显示我添加的文件。Bash无法识别我通过Windows文件资源管理器放入的文件,对我而言,这完全击败了在Windows上安装Bash的目的。