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

Cygwin绝对路径给出C://cygdrive/C,而相对路径工作正常,cygwin,Cygwin,使用带有相对路径的VScode CLI(代码)可以很好地处理cygwin: code../source 但是使用绝对路径,它给了我一些以C://cygdrive/C/…开头的东西: code~/source给了我C://cygdrive/C/Users/user/source 此路径不存在,因此我创建了一个新文件 如何使cygwin使用绝对路径 路径中的VScode如下所示:/cygdrive/c/Users/user/AppData/Local/Programs/Microsoft VS-co

使用带有相对路径的VScode CLI(代码)可以很好地处理cygwin:
code../source

但是使用绝对路径,它给了我一些以
C://cygdrive/C/…
开头的东西:

code~/source
给了我
C://cygdrive/C/Users/user/source

此路径不存在,因此我创建了一个新文件

如何使cygwin使用绝对路径


路径中的VScode如下所示:
/cygdrive/c/Users/user/AppData/Local/Programs/Microsoft VS-code/bin:

Windows上的VScode可能不期望也不能正确解释POSIX样式的路径
/cygdrive/c/..
是Cygwin透视图中的绝对路径(默认情况下,Cygwin在
/Cygwin/
下装载Windows驱动器号)

但对于VScode(或其他本机Windows应用程序),这看起来不像是一个绝对路径,因此它将在它前面加上
C:\something\…
,使其成为绝对路径

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

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

请参阅。

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

我在windows端通过在
C:\cygdrive\C\
C:\
之间创建一个符号链接解决了这个问题

  • 我在
    C
    上创建了一个名为
    cygdrive
    的空文件夹
  • 我以管理员身份打开cmd
  • 我执行命令
    mklink/D“C:\cygdrive\C\”“C:\”

  • VScode按预期运行。

    这个解决方案也可以,但它没有那么灵活,因为我需要这样的函数来处理每个需要使用绝对路径的命令。您可以创建bash别名或其他东西。在某些应用程序中,即使没有,它也能正常工作,但这是偶然的。正如你在我提供的链接中所看到的,这就是方法。不会有什么神奇的解决办法。