Xav*_*ero 12 linux windows symlink windows-subsystem-for-linux wsl-2
我真的很挣扎相对符号链接上WSL2它们在Linux的本地文件系统创建的,我想,当通过共享点访问文件\\wsl$\distro-name\whatever
-他们只是打破。
我已经wsl2
在我的 Windows10 中激活了。我有一个Ubuntu-20.04
:
损坏的符号链接禁止我在“从 Windows 中的 IDE 编辑”时无缝地“在 wsl2 中执行”。
实际用例(但不限于):开发两个集成项目:一个带有应用程序的 repo 和另一个与库一起存在的 repo。该应用程序符号链接库:
/files/repos/my-nice-app
/files/repos/my-nice-lib
my-nice-app/libs/my-nice-lib
是一个符号链接 ../../my-nice-lib
\\wsl$\Ubuntu-20.04\files\repos\my-nice-app
通过此设置,该位置\\wsl$\Ubuntu-20.04\files\repos\my-nice-app\libs\my-nice-lib
应映射到\\wsl$\Ubuntu-20.04\files\repos\my-nice-lib
。
但它不起作用。IDE 中的所有代码完成都搞砸了,因为符号链接没有很好地解映射并且 IDE 无法读取库的类和定义。
每当我在 NTFS 文件系统中从 linux 创建符号链接时,它都会在 windows 中正确解码。
反面相同:如果我从 windows(使用 CMD 和mklink
或 Powershell 使用New-Item
)创建链接,它们会在 linux中正确解码。
想象一下这个场景:
我有这个 dir:/mnt/c/tmp
对应于C:\tmp
.
到这里我应该有一个文件original.txt
和三个链接linux.txt
,cmd.txt
并且powershell.txt
成功:我确实在 3 个 shell 中看到了所有这些:linux、cmd 和 powershell:
在 Linux(图像中的 1)中,我们看到它们是符号链接,以及来自 CMD(图像中的 2)和 powershell(图像中的 3)中的符号链接。
Linux 和 CMD 也报告了“解映射”(图像中的 4)。由于cmd.txt
和linux.txt
都是相对符号链接,因此后面没有什么可做的,只要明白它们是链接就完成了。
由于某种我不关心这个问题的原因,Powershell 将相对符号链接提升为绝对符号链接。这显示了一个非常有趣的效果:
幕后的某个人一定在做某种翻译工作,在这种情况下做得很好(图像中的 5):虽然从 linuxpowershell.txt
它指向一条以/mnt/c/...
windows 解释器开头的路径,但它认为它指向C:\...
.
现在是时候看看我是否可以cat
(type
在 Windows 中)所有这些的内容......
这里不需要解释。包括相对链接和绝对链接在内的所有 9 种组合(3 种创建方法 x 3 种消耗方法)都可以完美运行。
现在是打破规则的时候了......
我将执行完全相同的过程,但不是在 Windows 上执行,而是在 Windows/mnt/c/tmp
上/tmp
和 Windows 中执行,而不是C:\tmp
从\\wsl$\Ubuntu-20.04\tmp
.
开始吧...
我从linux开始。/tmp
在WSL2
文件系统上导航并创建一些虚拟内容。我继续做符号链接。
当我尝试使用 CMD 去那里时,我真的不能,因为它抱怨是 UNC 路径:
我会改变我的策略,我会做一个网络挂载以获得一个驱动器号,看看CMD是否更喜欢它。我将W:
用于WSL2
文件系统。在图像中:1 = 我创建它,2 = 我检查它已创建,3 = 我导航到tmp
WSL2。
但是现在……哦,惊喜!!!当我尝试从 CMD 执行符号链接时...它拒绝访问:
让我们尝试使用提升的 PowerShell ...
在此图像中,我可以看到我可以正确导航到 UNC 路径(图像中的 1),但是在尝试创建链接时...繁荣...图像中的 2:“符号链接与指定路径不兼容” :
所以只有一种方法可以在 WSL2 中创建符号链接:从 linux 内部。让我们看看如何列出并访问它。
开始,linux 可以看到 linux 链接(当然):
但是当移动到 CMD 时,列表显示“JUNCTION”而不是“SYMLINK”,因为它在 NTFS 上显示它,另外在尝试访问它时,它会中断:
最后,当进入 Powershell 时,行为类似:它看到“它就在那里”,但无法访问内容:
我怎样才能WSL2
在 linux 端和 windows 端都有一个正常工作的符号链接?
如果它是一个错误,它是什么模块?内核?WSL 本身?P9协议?我很乐意做出贡献,但我什至不知道我应该为哪个项目做出贡献。
我已经深入阅读了所有这些内容:
还有更多,但仍然没有运气。
归档时间: |
|
查看次数: |
2245 次 |
最近记录: |