2017-03-04 01:59:01 +0000 2017-03-04 01:59:01 +0000
113
113
Advertisement

Windows Subsystem for Linux的主目录是什么?

Advertisement

当我在Windows Subsystem for Linux上启动bash时,它把我丢到

/mnt/c/Users/<username>

目录下,当我ls这个目录时,我看到使用Windows文件资源管理器可以看到的DesktopDocuments等目录都在C:\Users\<username>中。由于这是bash程序开始的地方,我以为这是我的主目录,但当我输入cdcd ~时,我被带到

/home/<username>

,其中包含了我的.bashrc.profile等文件,我期望在Linux盒子中找到我的主目录。此外,从这里输入cd ../..,我可以看到binetc等目录,同样是Linux盒子上的预期。

关于这些,我有两个问题。

1./mnt/c/Users/<username>C:\Users\<username>到底是什么?似乎它们是一个整体——那么/mnt/c/是什么? 2. 我如何使用 Windows 檔案總管來檢視 /home/<username> 中的檔案? 我并不是真的想这样做–我只是想了解一下 Windows 是如何组织这个 Linux 子系统的。

Advertisement

答案 (11)

132
132
132
2017-12-29 12:07:21 +0000

2:当前路径现在与你从微软商店安装的发行版有关,而不是一个全局路径。所以,对于Ubuntu来说,现在的路径是:

%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

我想其他的发行版也会在类似的位置 在各自的文件夹下

%LOCALAPPDATA%\Packages\
33
33
33
2017-03-04 02:59:20 +0000
  1. /mnt/cC:1./mnt/c`与完全一样。只是从WSL得到它的语法。
  2. C:\Users\<username>\AppData\Local\Lxss\rootfs中查找。
21
Advertisement
21
21
2018-08-09 12:58:03 +0000

关于安装在/mnt/c

1的文件系统。与C:/Users/相比,/mnt/c/Users/到底是什么?似乎它们是一个整体–那么/mnt/c/是什么?

与Windows相反,Linux(以及其他基于Unix的系统)使用的是单一的文件夹结构,与你的磁盘数量无关。如果你有多个磁盘,所有这些磁盘都必须在某些时候被安装到文件夹结构中。

  • 通常情况下,所有的磁盘(不同于用来启动系统的磁盘)都会被_挂载到一个名为/mnt/media

的文件夹中,WSL有一个特殊类型的文件系统,名为DrvFS,让你可以访问windows中使用的磁盘。您不仅可以使用DrvFS来挂载windows文件系统,还可以挂载网络磁盘和其他媒体类型。

  • 在WSL中,默认情况下,windows中的C:磁盘被挂载在/mnt/c
  • 如果你有另一个磁盘,例如windows中的D:磁盘,它将被挂载在/mnt/d

你在/mnt/c中能看到的文件和你在C:中的文件是一样的。如果你修改了一些文件,你也会在windows中得到改变。

您可以 使用 mount 命令来访问其他类型的媒体 (例如,可移动驱动器或网络共享)。


关于/home/<username>的位置

1.如何使用Windows文件资源管理器查看/home/中的文件?并不是说我真的想这样做–我只是想了解一下Windows是如何组织Linux子系统的。

在WSL中,所有的Linux文件系统都位于一个Windows文件夹下。文件夹的位置取决于Windows的版本和你使用的WSL发行版。

  • 初始版本的WSL将linux文件系统存储在%LOCALAPPDATA%\Lxss\rootfs
  • 从Windows Store安装的WSL发行版 ,从Windows Build 16215(2017年年中)开始,使用类似%LOCALAPPDATA%\Packages\...\LocalState\rootfs的文件夹。软件包的名称根据发行版的不同而不同(例如,对于Ubuntu和Debian来说是不同的)
  • 使用其他工具安装的Linux发行版,如 lxRunOffline WSL-DistroLauncher 可以将linux文件系统存储到任何位置。

你可以查看 许多选项来知道WSL文件夹的位置。例如,我认为最简单的选项是使用 lxRunOffline 来知道安装文件夹的位置。

## You can use lxrunoffline to check which WSL distributions have installed
## using: lxrunoffline list

C:\> lxrunoffline list
backup
Ubuntu-18.04    

## And you can use it to get the location of any of these WSL installations
## using: lxrunoffline get-dir -n <name of distribution>

C:\> lxrunoffline get-dir -n backup
c:\wsl\installed\backup

C:\> lxrunoffline get-dir -n Ubuntu
C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

一旦你知道了安装文件夹的位置,/home/<username>就在<installation folder>\rootfs\home\username下。

  • 例如,如果你的安装文件夹是c:\wsl\ubuntu
  • /home/<username>c:\wsl\ubuntu\rootfs\home\username

注意: Linux和Windows都以不同的方式存储文件权限。现在,WSL DrvFS将Linux的权限以Streams(元数据)的形式存储在Windows中可以看到的文件上。微软不建议使用Windows程序修改Linux文件。有可能某些Windows程序在没有注意到的情况下破坏了linux的权限

7
7
7
2019-02-20 18:35:13 +0000

在Bash中,要在Windows文件资源管理器中查看当前目录,只需输入。

explorer.exe .

不要漏掉"…“.

这将在当前文件夹处打开windows资源管理器,你可以看到所有东西与你的Windows系统其他部分的关系。

6
Advertisement
6
6
2018-07-16 08:06:17 +0000

我想这可能取决于你在哪个windows build上,但对我来说,2018年在Windows 10 Pro 64位上,1709版本(OS Build 16299.522),也有1803版本(OS Build 17134. 165)[在我打字的时候,讽刺地发生了一次windows更新]位置仍然是:

C:\Users\<username>\AppData\Local\lxss

诀窍是当你在C:\Users\<username>\AppData\Local时,你不会看到一个lxss文件夹(除非你恰好在文件夹选项中取消了 “隐藏受保护的操作系统文件(推荐)"的勾选)。

不过只要在windows资源管理器地址栏中追加\lxss,就会带你找到这个文件夹。

(注意,我没有%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc或类似Michael Bonds答案中提到的东西)

更新

原来我安装的是传统的WSL。现在WSL是通过微软商店的应用提供的。有适用于Ubuntu 18.04 LTS的版本,也有适用于其他Linux的版本(例如Debian)。如果你想成为最新的,你可能想卸载旧版WSL并安装微软商店版

你的主文件夹在哪里取决于你安装了哪种类型的WSL。

4
4
4
2018-01-15 12:07:42 +0000
  1. 使用WSL bash控制台,在你的主目录下,创建一个任意特定名称的文件,如 “test\here.txt"。
  2. 然后使用Windows资源管理器,使用搜索框,搜索文件test/_here.txt。
  3. 在找到的文件上点击右键>打开文件位置。
3
Advertisement
3
3
2019-11-16 15:21:34 +0000

使用当前的Windows 10 Insider(快环:Windows 10 build 19025.1),你可以将你的发行版挂载为网络驱动器。WSL的访问方式是wls$,路径是你的发行版名称(wsl -l -q)。

例如 net use Z: \wsl$\Debian /PERSISTENT:YES

2
2
2
2019-01-11 16:56:17 +0000

windows 10 pro的四个步骤,将你的Debian/Ubuntu/OpenSUSE $HOME钉到Windows的开始菜单。

1.从开始菜单中启动文件资源管理器 2.在地址栏中(不是搜索栏)输入 %LOCALAPPDATA%。在地址栏(不是搜索栏)输入 %LOCALAPPDATA%。 3. 在搜索栏中寻找你的$HOME目录名,在我的例子中是ekenny。大约会有3个版本,但你要的是路径很长的那个。 4. 右键点击你的home目录,然后点击 “Pin to Start"。

现在你已经把你的主目录钉在开始菜单上了。我试着创建了一个快捷方式,但这并不能让人明白。

0
Advertisement
0
0
2019-12-10 11:31:19 +0000

如果你在安装发行版时使用了 Chocolatey ,那么主目录的路径是:

C:\ProgramData\chocolatey\lib\wsl-<distribution-name>\tools\unzipped\rootfs\home

例如 Ubuntu 18.04

C:\ProgramData\chocolatey\lib\wsl-ubuntu-1804\tools\unzipped\rootfs\home
0
0
0
2019-12-19 09:08:46 +0000

在我的设置中(WSL Ubuntu下的 “Windows 10开发环境",从https://developer.microsoft.com/en-us/windows/downloads/virtual-machines 下载)AppData文件夹默认是隐藏的。所以不得不这样做。

  • 打开windows资源管理器
  • 进入`C:\Users\User在我的设置中(WSL Ubuntu下的 "Windows 10开发环境",从[https://developer.microsoft.com/en-us/windows/downloads/virtual-machines ]0x3&下载)AppData文件夹默认是隐藏的。所以不得不这样做。

  • 打开windows资源管理器

  • 进入

  • 在meny上选择view

  • 勾选hidden items

  • 然后AppData文件夹出现在C:\Users\User 下 - 我在/home/user下找到了我的 C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs\home\user (其中*可能是本地代码或版本代码之类的)

不知道为什么它被藏起来了。

0
Advertisement
0
0
2019-04-15 11:34:10 +0000

我只是需要找到/etc/environment使用Ubuntu 16.04寻找到Windows 10 NTFS存储。我在这里找到了它。

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • 我把/mnt/c/改成了C:我只是需要找到/etc/environment`使用Ubuntu 16.04寻找到Windows 10 NTFS存储。我在这里找到了它。
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • 我把/mnt/c/改成了,以适应Windows的命名法。
  • 出于同样的原因,我也将所有出现的/改为我只是需要找到/etc/environment`使用Ubuntu 16.04寻找到Windows 10 NTFS存储。我在这里找到了它。
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • 我把/mnt/c/改成了C:我只是需要找到/etc/environment`使用Ubuntu 16.04寻找到Windows 10 NTFS存储。我在这里找到了它。
C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
  • 我把/mnt/c/改成了,以适应Windows的命名法。
  • 出于同样的原因,我也将所有出现的/改为。
  • 你需要用你的 Windows 用户名取代 USER_NAME
  • 我必须使用sudo -H Nautilus来获得查看存储在WSL中的用户文件的权限。
  • 永远不要使用Windows应用程序更新WSL中的Linux文件。它将破坏你的Linux数据**.

  • 永远不要使用Windows应用程序更新WSL中的Linux文件。

从Linux (Ubuntu 16.04)方面来看,命名法是。

$ sudo cat /mnt/c/Users/USER_NAME/AppData/Local/Packages/CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc/LocalState/rootfs/etc/environment

PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0
Advertisement
Advertisement