bcf*_*bcf 293 bash windows-10 windows-subsystem-for-linux
当我bash在 Linux 的 Windows 子系统上启动时,它会将我放到目录中
/mnt/c/Users/<username>
Run Code Online (Sandbox Code Playgroud)
当我ls看到这个目录时,我看到了使用 Windows 文件资源管理器时可以看到的目录Desktop、Documents等C:\Users\<username>。由于这是bash程序开始的地方,我希望这是我的主目录,但是当我输入cd或cd ~我被带到
/home/<username>
Run Code Online (Sandbox Code Playgroud)
其中包含我希望在 Linux 机器的主目录中找到的我的.bashrc, .profileetc. 文件。此外,cd ../..从这里进入我可以看到目录bin,etc等等,这在 Linux 机器上再次如预期。
关于这一切,我有两个问题:
/mnt/c/Users/<username>与什么相比C:\Users\<username>?似乎它们是同一个——那是/mnt/c/什么?/home/<username>使用 Windows 文件资源管理器查看文件?并不是说我真的想要——我只是想了解一下 Windows 如何组织 Linux 子系统。小智 309
在最新版本 [2020] 中,文件系统从以下位置访问:
# \\wsl$\<Distribution>:
\\wsl$\Ubuntu
Run Code Online (Sandbox Code Playgroud)
此前,截至 2018 年,当前路径与您从 Microsoft Store 安装的发行版有关,而不是与一个全局路径有关;对于 Ubuntu,它位于:
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
Run Code Online (Sandbox Code Playgroud)
其他发行版应(待确认)在其各自文件夹下的类似位置:
%LOCALAPPDATA%\Packages\
Run Code Online (Sandbox Code Playgroud)
Gar*_*ett 179
在 Bash 中,要在 Windows 文件资源管理器中查看当前目录,只需输入:
explorer.exe .
Run Code Online (Sandbox Code Playgroud)
不要遗漏“.”。
这将在当前文件夹中打开 Windows 资源管理器,您可以看到与 Windows 系统的其余部分相关的所有内容。
Jos*_*ica 52
/mnt/c与 完全相同C:\。这只是从 WSL 获取它的语法。C:\Users\<username>\AppData\Local\Lxss\rootfs。Jai*_*ime 48
关于挂载的文件系统 /mnt/c
- /mnt/c/Users/ 与 C:\Users<username> 相比究竟是什么?看起来它们是同一个——那么 /mnt/c/ 是什么?
与 Windows 不同,Linux(以及其他基于 Unix 的系统)使用与您拥有的磁盘数量无关的单一文件夹结构。如果您有多个磁盘,那么所有这些磁盘都必须在某个时候安装到文件夹结构中。
/mnt或/mediaWSL 有一种特殊类型的文件系统,名为 DrvFS,可让您访问 Windows 中使用的磁盘。您不仅可以使用 DrvFS 挂载 Windows 文件系统,还可以挂载网络磁盘和其他媒体类型。
C: windows 中磁盘挂载在/mnt/cD:windows 中的磁盘,它将安装在/mnt/d您可以在/mnt/c其中看到的文件与您在其中看到的文件相同C:. 如果您修改某个文件,您也会在窗口中获得更改。
您可以使用该mount命令访问其他类型的媒体(例如可移动驱动器或网络共享)。
关于位置 /home/<username>
- 如何使用 Windows 文件资源管理器查看 /home/ 中的文件?并不是说我真的想要——我只是想了解一下 Windows 如何组织 Linux 子系统。
在 WSL 中,所有 linux 文件系统都位于 Windows 文件夹下。该文件夹的位置取决于您使用的 Windows 版本和 WSL 发行版。
%LOCALAPPDATA%\Lxss\rootfs%LOCALAPPDATA%\Packages\{package}\LocalState\rootfs. 软件包的名称因发行版而异(例如,Ubuntu 与 Debian 的名称不同)。对于 Windows 上的 Ubuntu,它是CanonicalGroupLimited.UbuntuonWindows_{code}。您可以检查许多选项以了解 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
Run Code Online (Sandbox Code Playgroud)
一旦你知道的安装文件夹的位置,/home/<username>为下<installation folder>\rootfs\home\username。
c:\wsl\ubuntu/home/<username>是c:\wsl\ubuntu\rootfs\home\username注意: Linux 和 Windows 以不同的方式存储文件权限。如今,WSL DrvFS 将 Linux 权限存储为附加到您可以在 Windows 中看到的文件的流(元数据)。Microsoft 不建议使用 Windows 程序修改 linux 文件。某些 Windows 应用程序可能会在没有通知的情况下损坏 linux 权限。
小智 25
使用当前的 Windows 10 Insider(快速环:Windows 10 build 19025.1),您可以将发行版安装为网络驱动器。
WSL 可作为 访问wsl$,路径是您的分发名称 ( wsl -l -q)。
例如 net use Z: \\wsl$\Debian /PERSISTENT:YES
Use*_*ser 10
这取决于您使用的 Windows 版本,对我而言,2018 年在 64 位 Windows 10 Pro 版本 1709(操作系统版本 16299.522)和版本 1803(操作系统版本 17134.165)上的位置仍然是:
C:\Users\<username>\AppData\Local\lxss
诀窍是当您在时C:\Users\<username>\AppData\Local不会看到lxss文件夹(除非您碰巧在文件夹选项中未选中“隐藏受保护的操作系统文件(推荐)”)。
但是,只需\lxss在 Windows 资源管理器地址栏中附加,它就会带您到该文件夹。
(注意我并没有有一个%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc或任何类似的是在迈克尔债券答复中提到)
更新
原来我安装的是旧版 WSL。现在 WSL 是通过 Microsoft 商店应用程序提供的。有适用于 Ubuntu 18.04 LTS 的版本,现在还有一些其他版本的 Linux(例如 Debian)。如果您想保持最新状态,您应该卸载旧版 WSL并安装Microsoft 商店版本。
您的主文件夹在哪里取决于您安装了哪些类型的 WSL。如其他答案中所述,对于 Microsoft 商店版本,它将位于:
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \LocalState\rootfs
小智 5
| 归档时间: |
|
| 查看次数: |
567162 次 |
| 最近记录: |