【问题标题】:Location of /root/ on Windows 10 Ubuntu/root/ 在 Windows 10 Ubuntu 上的位置
【发布时间】:2016-08-10 21:52:42
【问题描述】:

我在 Windows 10 上的 Ubuntu 上安装了 bash - 内部预览版。但是,如果使用 Ubuntu 的终端,Windows 终端使用起来有点麻烦。我想知道是否有办法从 Windows 访问 Ubuntu 文件系统,以便我可以在其他编辑器中进行开发并从 Ubuntu-bash 运行代码?

【问题讨论】:

  • 现在,Windows 在同一台机器上支持多个 Linux 发行版。根位置取决于您使用的发行版。您可以在%LOCALAPPDATA%\Packages 中找到它们。对于 Ubuntu 18.04,它是 %LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc

标签: ubuntu terminal windows-10 windows-subsystem-for-linux


【解决方案1】:

自 2017 年底以来发布的 Windows 10 版本(包括 Fall Creators Update 和 Windows Insiders Builds 17063+)支持在同一台机器上运行多个 linux 发行版。因此,WSL 必须将每个发行版的根文件系统存储在不同的位置。

根文件系统不再位于

%LocalAppData%\lxss\rootfs

文件系统文件夹的新位置

从 Windows 应用商店安装的每个 linux 发行版都将根文件系统存储在不同的文件夹中

%LocalAppData%\Packages\<distro folder>\LocalState

&lt;distro folder&gt; 因一种发行版而异。例如,以下是我的测试计算机中的&lt;distro folder&gt;

  • Ubuntu 16.04:CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc
  • Ubuntu 18.04:CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
  • Debian : TheDebianProject.DebianGNULinux_76v4gfsz19hv4
  • 卡利Linux:KaliLinux.54290C8133FEE_ey8k8hqnwqnmg

如果您想访问 roothome 文件系统,您必须使用相应的文件夹。例如,要访问 KaliLinux 的文件夹,您必须访问:

%LocalAppData%\Packages\KaliLinux.54290C8133FEE_ey8k8hqnwqnmg\rootfs   # root
%LocalAppData%\Packages\KaliLinux.54290C8133FEE_ey8k8hqnwqnmg\home     # home

使用 lxRunOffline 获取路径

LxRunOffline 是一个管理 WSL linux 发行版的工具。它可用于安装 WSL 发行版或将其移动到您计算机的任何文件夹中。

您可以使用lxRunOffline get-dir获取安装文件夹的路径。 root 位于 rootfs 子文件夹中。

C:\> lxrunoffline list
Ubuntu-18.04
ubuntu-copy

C:\> lxrunoffline get-dir -n Ubuntu-18.04
C:\Users\nnn\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState

C:\> lxrunoffline get-dir -n ubuntu-copy
d:\wsl\installed\ubuntu-copy

以编程方式获取路径

如果您有兴趣,可以使用程序获取路径。有关已安装发行版及其配置的信息存储在 Windows 注册表中。

您可以使用regedit和以下路径查看信息:

HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss

您已经安装了各种发行版的所有配置。例如,您可以使用 Powershell 获取默认分发的基本路径信息。

$WSLREGKEY="HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss"
$WSLDEFID=(Get-ItemProperty "$WSLREGKEY").DefaultDistribution
$DISTROPATH=(Get-ItemProperty "$WSLREGKEY\$WSLDEFID").BasePath
echo "the filesystems are located at $DISTROPATH"

要检查所有已安装发行版的文件系统,您也可以使用 Powershell。

(Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object {Get-ItemProperty $_.PSPath}) | select DistributionName,BasePath

【讨论】:

    【解决方案2】:

    任何可以打开 Windows 命令提示符的终端程序都应该能够运行 bash(bash.exe 启动 Windows Linux 子系统),因此您不必被 command.exe 卡住。

    Conemu(@anotherfred 提到)或 Cmder 是一些粉丝的最爱。如果您愿意,也可以使用 Powershell。

    您可以从 WSL 的 /mnt/c 访问您的 Windows 文件(如果您有 d: 驱动器等,则可以访问 /mnt/d)。如果您想执行命令行操作并仍然使用您最喜欢的 Windows 编辑器访问文件,那么这种方法相对较好。

    您可以在 Windows 中查看您的 WSL file system

    %LocalAppData%\lxss\rootfs
    

    虽然我不会在 Windows 中弄乱它。

    /root 会在

    %LocalAppData%\lxss\rootfs\root
    

    /home 将在

    %LocalAppData%\lxss\rootfs\home
    

    这两个是分开挂载的,所以当你移除 WSL 时它们不会被删除。

    【讨论】:

      【解决方案3】:

      反之亦然:bash 正在访问 Windows 文件系统,您可以在 /mnt/c 找到该文件系统。您的文件(应该)在您的 Windows 文件系统中,您可以正常编辑它们。

      如果您只是不喜欢终端界面,请尝试使用 conemu (https://conemu.github.io/) 之类的东西。对于命令 shell、powershell 或任何你喜欢的 shell,它是一个方便而漂亮的界面。

      【讨论】:

        猜你喜欢
        • 2017-04-10
        • 2020-10-19
        • 2019-07-13
        • 2012-03-05
        • 1970-01-01
        • 1970-01-01
        • 2017-02-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多