从windows访问cygwin符号链接

Opt*_*mus 11 linux cygwin windows-7

我对cygwin很新.我创建了一个符号链接,如下所示

$ ln -s /var/www /cygdrive/d/foo
Run Code Online (Sandbox Code Playgroud)

当我检查 D通过Windows驱动器时,我看到一个名为的系统文件foo.有没有办法让fooWindows充当文件夹而不是系统文件?

小智 11

两年后,但我有答案

CYGWIN=winsymlinks:native
ln -s SOURCE TARGET
Run Code Online (Sandbox Code Playgroud)

CYGWIN环境变量

  • 这只适用于以管理员身份运行cygwin的情况.如果我以普通用户身份运行,它会回归到传统的cygwin链接风格. (3认同)

ak2*_*ak2 10

Windows将无法读取Cygwin创建的符号链接,但您可以使用Windows命令创建Windows符号链接,Cygwin会将这些符号链接视为符号链接.

在Vista和7上,可以使用'mklink'完成.这是一个cmd.exe内置而不是一个独立的实用程序,所以如果你想从一个bash shell调用它,你必须做'cmd/c mklink',当然它只会理解Windows路径.

对于XP,"Windows资源工具包工具"包含一个名为linkd的实用程序,可用于创建目录链接.


AlG*_*AlG 8

从来没听说过.Cygwin不会更新操作系统以使用符号链接,而是允许您从Cygwin shell中"伪造"符号链接.您可以将shell设置为使用Windows LNK文件,这可能会执行您想要的操作,但是......

来自Cygwin文档:

使用cygutils创建快捷方式

另一个问题区域是Unix样式链接和Microsoft .lnk文件,它们将一个文件链接到另一个文件,Microsoft .lnk文件提供文件的快捷方式.它们乍一看似乎相似,但实际上却完全不同.默认情况下,Cygwin不会将符号链接创建为.lnk文件,但可以选择执行此操作,请参阅"CYGWIN环境变量"一节.这些符号链接.lnk文件与Windows创建的.lnk文件兼容,但它们仍然不同.它们不包含标准Microsoft快捷方式中可用的大部分信息,例如工作目录,图标等.cygutils包中包含用于创建标准本机Microsoft .lnk文件的mkshortcut实用程序.

但这是问题所在.如果Cygwin像任何其他符号链接一样处理这些本机快捷方式,则无法将Microsoft .lnk文件存档到tar存档中并将所有信息保存在其中.在解压缩之后,这些快捷方式将丢失所有额外信息,并且与标准Cygwin符号链接没有区别.因此,这两种类型的链接的处理方式不同.不幸的是,这意味着创建和使用符号链接的常用Unix方法不适用于本机Windows快捷方式.