从windows访问cygwin符号链接

时间:2010-07-27 13:17:03

标签: linux windows-7 cygwin

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

$ ln -s /var/www /cygdrive/d/foo

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

4 个答案:

答案 0 :(得分:11)

两年后,但我有答案

CYGWIN=winsymlinks:native
ln -s SOURCE TARGET

The CYGWIN environment variable

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:8)

不是我知道的。 Cygwin不会更新操作系统以使用符号链接,而是允许您从Cygwin shell中“伪造”符号链接。您可以将shell设置为使用Windows LNK文件,这可能会执行您想要的操作,但是......

来自Cygwin Documentation

  

使用cygutils创建快捷方式

     

另一个问题是介于两者之间   Unix风格的链接,链接一个文件   到另一个和Microsoft .lnk文件,   它提供文件的快捷方式。   乍一看它们似乎相似但是,   实际上,是完全不同的。通过   默认情况下,Cygwin不会创建   符号链接为.lnk文件,但有一个   选项,请参阅该部分   称为“CYGWIN环境   变量”。这些符号链接.lnk文件   与Windows创建兼容   .lnk文件,但它们仍然存在   不同。他们不包括太多   一个可用的信息   标准的Microsoft快捷方式,例如   工作目录,图标等   cygutils包包括一个   用于创建的mkshortcut实用程序   标准的原生Microsoft .lnk文件。

     

但这是问题所在。如果是Cygwin   处理这些本机快捷方式   任何其他符号链接,你不能   将Microsoft .lnk文件存档到tar中   存档并保留所有信息   在他们中。打开包装后,这些   快捷方式将失去所有   额外的信息,将是没有   不同于标准的Cygwin   符号链接。因此这两类   链接的处理方式不同。   不幸的是,这意味着   通常的Unix创建和使用方式   符号链接不适用于本机   Windows快捷方式。

答案 3 :(得分:3)

在没有函数的情况下调用mklink(/ d创建目录链接)的另一种方法:

link_name="/cygdrive/c/TestLink"
target_dir="/cygwin/c/Windows"
cmd /c mklink /d "`cygpath -w \"$link_name\"`" "`cygpath -w \"$target_dir\"`"

此示例使用反引号(`command`)进行命令替换。