Cygwin 绝对路径给出 C://cygdrive/c 而相对路径工作正常

Cygwin absolute path give C://cygdrive/c while relative path works fine

使用带有相对路径的 VScode CLI (code) 可以很好地与 cygwin 配合使用: code ../source

但是使用绝对路径它给了我一些以 C://cygdrive/c/...:

开头的东西

code ~/source 给我 C://cygdrive/c/Users/user/source.

这个路径不存在,所以我新建一个文件。

如何让 cygwin 使用绝对路径?

PATH 中的

VScode 如下所示:/cygdrive/c/Users/user/AppData/Local/Programs/Microsoft VS Code/bin:

VScode on Windows 可能不期望也不会正确解释 POSIX 风格的路径。 /cygdrive/c/... 是 Cygwin 角度的绝对路径(默认情况下,Cygwin 将您的 Windows 驱动器号安装在 /cygwin/ 下)。

但是对于 VScode(或其他本机 Windows 应用程序)来说,这看起来不像是绝对路径,因此它会在其前面添加 C:\something\... 以使其成为绝对路径。

与在 Cygwin 上使用本机 Windows 应用程序相关的大多数路径问题一样,您应该使用 cygpath 实用程序将您的路径转换为 ​​VScode 可以理解的路径。例如。

$ code "$(cygpath -w -a ~/source)"

参见 Using Cygwin effectively with Windows

问题似乎是 VScode(windows 方)得到 C:\cygdrive\c\Users\user\source 并试图解决它。这会导致找不到文件,因此我们在该路径中创建一个新文件。

我通过在 C:\cygdrive\c\C:\ 之间创建符号 link 在 windows 方面解决了这个问题。

  1. 我在 C 上创建了一个名为 cygdrive 的空文件夹。
  2. 我以管理员身份打开 cmd
  3. 我执行命令mklink /D "C:\cygdrive\c\" "C:\".

和 VScode 按预期运行。