我几乎只使用 WSL,并且只切换到主窗口来浏览和运行 Windows 本机程序。我有一个 git 存储库,位于
/mnt/c/myrepo
。为了“安装”/mnt/c/myrepo
内的代码,我需要将其移动到/mnt/c/otherlocation/renamed
。我不想每次从 cp -r /mnt/c/myrepo /mnt/c/otherlocation/renamed
执行 git pull
时都执行 /mnt/c/myrepo
,而是想将 /mnt/c/myrepo
符号链接到 /mnt/c/otherlocation/renamed
。但是,当我这样做时,使用 /mnt/c/otherlocation/renamed
的程序无法查看重命名为目录的“内容”。
我一直在 WSL github 存储库和问题跟踪器中尝试寻找此问题的解决方案。我看到很多关于符号链接如何“正常工作”的感叹。我已经启用了我能找到的所有 Windows 10 开发人员功能,我什至关注了一些 reddit 线程,其中有人声称购买 Pengwin 并从 Pengwin 创建符号链接可以确保这种兼容性,但我似乎仍然无法实现此功能。
我需要的基本用法是允许我从 Windows 中将“重命名”视为目录,或者让 Windows 将符号链接识别为符号链接目录。
来自 wsl:
ln -s /mnt/c/myrepo /mnt/c/otherlocation/renamed
从窗口:
我该怎么做?
在 Windows 中的 cmd.exe 中执行符号链接:
mklink /d C:\otherlocation\renamed C:\myrepo
如果两个目录都在 Windows 中,那么在 WSL 中创建符号链接是没有意义的。
此符号链接也适用于 WSL。
解决这个问题的方法很简单,就是在声明链接时使用相对路径。如果你想从一个窗口链接到另一个窗口,你应该从当前目录开始相对路径,然后你可以链接到任何你想要的地方。
从示例中,而不是这个:
ln -s /mnt/c/myrepo /mnt/c/otherlocation/renamed
这样做:
cd /mnt/c/otherlocation
ln -s ../../myrepo ./renamed
因为这似乎是唯一一个在搜索 从 Windows 到 WSL 的符号链接时有任何 googlejuice 的 SO 帖子我想我应该添加该问题的答案,即,
如何创建适用于 Windows 应用程序的从 Windows 文件系统到 wsl 文件系统的“符号链接”?
答案在评论中,归功于@Mikepote
首先使用 以管理员身份运行打开Powershell
然后运行
New-Item -ItemType SymbolicLink -Path "windows-path\to\symlink" -Target "\\wsl$\Ubuntu\home\yourusername\path\to\target-thing"
如有必要,请将您的发行版名称替换为上面的
Ubuntu
,当然也可以用 yourusername
。
使用具有管理员权限的
cmd
在目录之间创建硬链接对我有用:
mklink /J C:\Users\NameNoSpace "C:\Users\Name With Spaces"