WSL:使用 Windows 中的 WSL 符号链接文件夹

问题描述 投票:0回答:4

我几乎只使用 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

从窗口:

  1. 打开文件资源管理器
  2. 导航到 c:\其他位置
  3. 打开 mydir 并查看内容,就好像它是本机目录一样

我该怎么做?

symlink windows-subsystem-for-linux
4个回答
18
投票

在 Windows 中的 cmd.exe 中执行符号链接:

mklink /d C:\otherlocation\renamed C:\myrepo

如果两个目录都在 Windows 中,那么在 WSL 中创建符号链接是没有意义的。

此符号链接也适用于 WSL。


14
投票

解决这个问题的方法很简单,就是在声明链接时使用相对路径。如果你想从一个窗口链接到另一个窗口,你应该从当前目录开始相对路径,然后你可以链接到任何你想要的地方。

从示例中,而不是这个:

ln -s /mnt/c/myrepo  /mnt/c/otherlocation/renamed

这样做:

cd /mnt/c/otherlocation
ln -s ../../myrepo ./renamed

4
投票

因为这似乎是唯一一个在搜索 从 Windows 到 WSL 的符号链接时有任何 googlejuice 的 SO 帖子我想我应该添加该问题的答案,即,

如何创建适用于 Windows 应用程序的从 Windows 文件系统到 wsl 文件系统的“符号链接”?

答案在评论中,归功于@Mikepote

  1. 首先使用 以管理员身份运行打开Powershell

  2. 然后运行

 New-Item -ItemType SymbolicLink -Path "windows-path\to\symlink" -Target "\\wsl$\Ubuntu\home\yourusername\path\to\target-thing" 

如有必要,请将您的发行版名称替换为上面的

Ubuntu
,当然也可以用
yourusername


0
投票

使用具有管理员权限的

cmd
在目录之间创建硬链接对我有用:

mklink /J C:\Users\NameNoSpace "C:\Users\Name With Spaces"
© www.soinside.com 2019 - 2024. All rights reserved.