bash
时,它会将我放置在目录中。当我ls
这个目录时,我会看到目录Desktop
,Documents
等我可以使用Windows File Explorer在C:\Users\<username>
中看到它们。由于这是bash
程序的开始位置,因此我希望这是我的主目录,但是当我键入cd
或cd ~
时,我会被带到包含我的.bashrc
的/mnt/c/Users/<username>
,
.profile
等文件,希望在Linux机器的主目录中找到。此外,从此处输入cd ../..
可以再次在Linux机器上按预期看到目录bin
,etc
等。我对此有两个问题:
/mnt/c/Users/<username>
和C:\Users\<username>
到底是什么?看来它们是同一个-那么/mnt/c/
是什么?如何使用Windows File Explorer查看
/home/<username>
中的文件?并不是我真的想要--我只是想了解Windows如何组织Linux子系统。#1 楼
对于2:当前路径现在与您从Microsoft Store安装的发行版相关,而不是与一个全局路径相关。对于Ubuntu,它现在位于:%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
我认为其他发行版将在其各自文件夹下的相似位置中:
%LOCALAPPDATA%\Packages\
这是一个老答案自2018年起有效,在最新版本[2020]中,文件系统可从以下位置访问:
# \wsl$\<Distribution>:
\wsl$\Ubuntu
评论
其他人会发现这种做法令人不安吗?我的HOME文件夹是否应该是回购中存放我的数据的唯一安全位置?通过这种方法,一个损坏的存储库并重新安装了“我的数据”,根本没有尝试保护它,并且当我已经拥有REAL / home时它被隐藏了。为什么数据不能在那里持久保存?这更加危险,因为现在鼓励我们尝试/使用/交换发行版(WLinux)。真的感觉好像有人没有把整个事情都考虑在内。
–rainabba
18-09-25在19:53
重要说明:您仍然不应该使用Windows工具来查看Linux文件。请参阅:blogs.msdn.microsoft.com/commandline/2016/11/17/…(另请参阅博客文章本身)
–coltoneakins
18/12/11在6:14
@rainabba乍一看,我同意,但是经过一番思考,我仍然选择使用Windows而不是功能全面的Ubuntu。因此,我将WSL视为访问Linux工具的一种方式,但仍将Windows文件系统视为头等公民。所以/ mnt / c /是我将所有内容存储在WSL中的位置。如果WSL改用LWS,我会喜欢的。这意味着如果我们都在运行带有Windows Linux子系统的Ubuntu来运行集成到Ubuntu的完整Windows 10副本,那将是非常棒的。我知道,这要困难得多,但可以做梦。
–雪佛兰
19年7月12日在6:10
对于WSL2,您可以从Windows \\ wsl $这样的目录访问主目录
–Francisco Tena
19年10月31日在9:01
自Windows 10 1903起,@ FranciscoTena幸运的是\\ wsl $已可用于WSL1!
– pabouk
20年4月28日在20:56
#2 楼
在Bash中,要在Windows File Explorer中查看当前目录,只需输入:explorer.exe .
不要遗漏“。”。
这将在当前文件夹中打开Windows资源管理器,您可以看到与Windows系统其余部分相关的所有内容。
评论
实际上是explorer.exe。在WSL中工作。这是唯一对我有用的答案,因为其他答案提供的所有路径都不存在于我的系统中。我自己无法编辑答案,因为编辑必须至少包含6个字符。
– Marco Lackovic
19/12/10在11:07
有趣。就我而言,无论我在哪里执行explorer.exe。,它始终会在Windows用户主目录(%USERPROFILE%)中打开文件资源管理器。 Windows 10企业版1809(内部版本17763.1039),Ubuntu 18.04。不管我在Ubuntu的家中,/ etc还是其他东西。
– David FerenczyRogožan
20 Mar 6 '20 at 18:27
我认为我们在这里可能会传达错误的信息-答案似乎与bash本身有关,对吗?但不一定是WSL1中的重击。我只是在WSL1中的ubuntu安装上尝试过此操作,找不到“ explorer.exe”,所以我认为答案只能部分正确,这与Marco Lackovic所说的相反。也许explorer.exe可以工作,但默认情况下不是100%,因为我刚刚使用bash引导ubuntu的实例对其进行了尝试。
–雪橇
20年8月26日在16:25
这就是我所期望的谢谢
–ÄRÂmmãřŻąîñh
20年11月1日,9:55
这是一个很好的发现。相反,我正在做开始。对于大多数意图和目的,它等效于explorer。,但是在这种情况下是不同的。
–Coffee_fan
20-11-25在18:33
#3 楼
/mnt/c
与C:\
完全相同。这只是从WSL获取它的语法。请参阅
C:\Users\<username>\AppData\Local\Lxss\rootfs
。评论
警告:blogs.msdn.microsoft.com/commandline/2016/11/17/…是的,但是没有任何改变。
–chx
17年5月5日在22:34
截至2018年,此答案不再有效。请参阅@MichaelBond的答案。
–dr_
18年3月20日在9:44
现在转到C:\ Users \ [USERNAME] \ AppData \ Local \ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs \您可能知道如果手动编辑/编辑,情况会很糟
–mementototem
18年6月21日在5:41
为方便通过复制粘贴访问,`%LOCALAPPDATA%\ Packages \ CanonicalGroupLimited.UbuntuonWindows_ [CODE] \ LocalState \ rootfs`
–树枝
19年5月13日在0:05
请注意,除非您取消选中“文件夹选项>视图:高级设置:隐藏受保护的操作系统文件(推荐)”,否则lxss文件夹将在文件资源管理器中隐藏。但是,即使它是隐藏的,如果在文件夹路径中输入该文件夹,仍然可以在“文件资源管理器”中打开该文件夹。
–达里恩
19年5月16日在7:20
#4 楼
关于安装在/mnt/c
上的文件系统/ mnt / c / Users /与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>
的位置如何使用Windows文件资源管理器查看/ home /中的文件?并不是我真正想要的是-我只是想了解Windows如何为Linux组织此Subsystem。
在WSL中,所有linux文件系统位于Windows文件夹下。文件夹的位置取决于Windows的版本以及所使用的WSL发行版。
WSL的初始版本将Linux文件系统存储在
%LOCALAPPDATA%\Lxss\rootfs
中从Windows商店开始的Windows Build 16215(2017年中)开始安装的WSL发行版使用类似
%LOCALAPPDATA%\Packages\{package}\LocalState\rootfs
的文件夹。软件包的名称因发行版本而异(例如,Ubuntu与Debian有所不同)。对于Windows上的Ubuntu,例如
CanonicalGroupLimited.UbuntuonWindows_{code}
。诸如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权限作为流(元数据)存储到Windows中可以看到的文件中。 Microsoft不建议使用Windows程序修改linux文件。某些Windows应用程序可能会在没有通知的情况下破坏linux权限。
#5 楼
使用当前的Windows 10 Insider(快速环:Windows 10 build 19025.1),您可以将发行版安装为网络驱动器。WSL可作为
wsl$
访问,路径是您的发行名称(wsl -l -q
)。范例net use Z: \wsl$\Debian /PERSISTENT:YES
评论
您确定这仅限于WSL2吗?我认为从1903年开始,您就可以从Windows内部探索WSL文件结构的内容。通过该更改,可以创建地图网络位置。
–猎犬
19年11月16日在15:38
如我所写,我不确定WSL2。有两点:引入WSL2(来自版本18432)和由WSL 2支持的发行版。此功能与WSL2一起出现,我希望它可以与任何发行版一起使用。
–驹
19年11月16日在16:19
除非您说的是1909(WSL2)是18363.476,而不是18432(Insider Preview 20H1),但这仅适用于20H1版本?
–猎犬
19 Nov 16 '21:19
只需添加:这是根据devblogs.microsoft.com/commandline/…访问文件的首选方式
–mhl666
19/12/31在15:31
打开Windows资源管理器,然后键入打开\\ wsl $ \。然后选择您的linux发行版打开文件夹,甚至映射到一个字母。与wsl version1一起使用。
– arvati
20-4-6在11:26
#6 楼
这取决于您所使用的Windows版本,对于我来说,在2018年的Windows 10 Pro 64位版本1709(OS Build 16299.522)和版本1803(OS Build 17134.165)上,位置仍然是: >C:\Users\<username>\AppData\Local\lxss
窍门是,当您位于
C:\Users\<username>\AppData\Local
时,您将看不到lxss
文件夹(除非您碰巧在文件夹选项中未选中“隐藏受保护的操作系统文件(推荐)”)。 br /> 但是只要在Windows资源管理器地址栏中附加
\lxss
,它就会带您到该文件夹。债券答案)更新
原来有我安装的旧版WSL。现在,WSL是通过Microsoft商店应用程序提供的。有适用于Ubuntu 18.04 LTS的版本,现在还有其他几种Linux版本(例如Debian)。如果要更新,则应卸载旧版WSL并安装Microsoft商店版本。
主文件夹的位置将取决于您已安装的这些WSL类型。使用Microsoft商店版本时,如其他答案中所述,它将位于:
%LOCALAPPDATA%\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
#7 楼
使用WSL bash控制台,在您的主目录中,创建一个具有任意特定名称的文件,例如“ test_here.txt”。
然后使用Windows资源管理器,在搜索框中搜索文件test_here。 txt。
在找到的文件上>右键单击>打开文件位置。
评论
我试过了没用我在搜索中看不到该文件。但是,如果将文件放在/ mnt / c / Users / <用户名>中,则显然可以正常工作。
– Eamonn Kenny
19年1月11日在16:39
恐怕我尝试了WSL,但是我不再使用它了。我觉得它没什么用。 (我每天都使用cygwin而不是WSL,我发现它非常有用。)所以我再也无法验证了,对不起;)
–艾利斯
19年1月13日在7:54
搜索rootfs的作品。然后,您可以从那里导航ubuntu文件系统。
–tigr
19年1月21日在4:14
信不信由你,这种方法对我不起作用。 Windows无法找到rootfs或我在WSL主目录中创建的文件。我很困惑
– dx_over_dt
20/07/27在17:06
#8 楼
Windows 10专业版将Debian / Ubuntu / OpenSUSE $ HOME固定到Windows的开始菜单的四个步骤:从开始菜单开始File Explorer
在地址栏中(不是搜索栏),键入%LOCALAPPDATA%。
在搜索栏中查找$ HOME目录名,在我的情况下为ekenny。大约有3个版本,但是您想要一个路径很长的版本。
右键单击您的主目录,然后单击“固定到开始”。
现在您已固定了主目录到开始菜单。我尝试创建一个快捷方式,但这种方式并不能理解。
#9 楼
在我的设置中(从https://developer.microsoft.com/zh-cn/windows/downloads/virtual-machines下载的“ Windows 10开发环境”下的WSL Ubuntu),默认情况下隐藏了AppData文件夹。因此必须:打开Windows资源管理器
转到
C:\Users\User\
选择
view
上的检查
hidden items
然后
AppData
文件夹出现在C:\Users\User
下,我在
/home/user
下找到了我的
C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\rootfs\home\user
(其中*
可能是本地代码或版本,取决于某些代码)Don不知道为什么会这样藏起来。
#10 楼
我只需要使用Ubuntu 16.04查找Windows 10 NTFS存储中的/etc/environment
。我在这里找到它:C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\environment
我将Windows命名法中的
/mnt/c/
更改为C:\
。我也更改了出于相同的原因,所有出现的
/
到\
。您需要用Windows用户名替换
USER_NAME
。我必须使用
sudo -H Nautilus
来获得查看存储在WSL中的用户文件的权限。切勿使用Windows应用程序在WSL中更新Linux文件。它将破坏您的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
#11 楼
如果您使用Chocolatey安装发行版,则主目录的路径为:C:\ProgramData\chocolatey\lib\wsl-<distribution-name>\tools\unzipped\rootfs\home
例如对于Ubuntu 18.04: />
评论
Windows 10中Linux子系统的文件系统在哪里的可能重复?