我正在尝试在 Windows 上更新我的.bash_profile
Ubuntu,但无法进入“rootfs”目录。
ls -l
输出
d--------- 1 me me 4096 Jul 22 09:17 rootfs
并且 chmod 或 sudo chmod 仍然出现错误:
chmod: cannot read directory 'rootfs/': Permission denied
我该怎么办,检查吗?
答案1
WSL 的 Linux 根文件系统位于 C:\Users\%USERNAME%\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\
类似地,Windows 文件系统可在 Linux 子系统中作为挂载在 /mnt/c、/mnt/d 等处的块设备访问,这些设备对应于 Windows 的 C:\ 驱动器、D:\ 等。
由于 WSL 文件系统和 Windows 文件系统彼此之间都有链接,这可能会创建一个无限循环的目录路径,你可以想象这样的事情:
/mnt/c/Users/%USERNAME%/AppData/Local/Packages/TheDebianProject.DebianGNULinux_76v4gfsz19hv4/LocalState/rootfs/mnt/c/Users/%USERNAME%/AppData/Local/Packages/TheDebianProject.DebianGNULinux_76v4gfsz19hv4....
或者
C:\Users\%USERNAME%\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\mnt\c\Users\%USERNAME%\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\mnt\c...
但这是不可能的。文件系统桥接器/接口只能在一层深度上工作。
如果您使用 Windows 资源管理器导航到 C:\Users\%USERNAME%\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\mnt\c,您可能会找到与 C:\ 中相同的文件,但它是空的,因为这个挂载的 C:驱动器目录仅在 WSL 内有效。
类似地,如果你在 WSL 中并导航到 /mnt/c/Users/%USERNAME%/AppData/Local/Packages/TheDebianProject.DebianGNULinux_76v4gfsz19hv4/LocalState,你会看到有一个名为 rootfs 的目录。此目录的权限/模式无法更改,即使是 root 也无法更改,因为它是一个特殊的接口文件,仅在 WSL 之外才有意义,适用于 Windows 资源管理器。
因此,要回答这个问题,如果你正在使用 WSL 并想要修改 .bash_profile 之类的 Linux 配置文件,则不应尝试导航到将 Linux 根文件系统桥接到 Windows 资源管理器的 Windows 资源管理器目录,而应直接编辑 / 下的文件,在本例中为 /home/$USERNAME/bash_profile