2010-07-27 44 views
11

我对cygwin很陌生。我创建了一个符号链接如下从窗口访问cygwin符号链接

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

,当我检查通过窗户D驱动器,我看叫foo系统文件。有没有办法使foo充当Windows的文件夹而不是系统文件?

回答

8

不是我所知道的。 Cygwin不会更新操作系统以获得符号链接,而是允许您从Cygwin shell中'伪造'符号链接。您可以设置使用Windows LNK文件,这可能做你想做的外壳,但是......

Cygwin Documentation

与cygutils

的另一个问题是地区之间创建快捷 Unix风格的链接,其中一个文件 链接到另一个,和微软的.lnk文件, 它提供了一个快捷方式文件。 他们乍一看似乎相似,但实际上, 是相当不同的。默认情况下,Cygwin不会创建 符号链接作为.lnk文件,但有 选项可以执行此操作,请参阅名为“CYGWIN环境 变量”的部分 。这些符号链接.lnk文件 与Windows创建的 .lnk文件兼容,但它们仍与 不同。它们不包括太多的 可用在 标准的微软快捷方式的信息,如 工作目录,图标等 的cygutils包中包含用于创建 标准的原生微软的.lnk文件 mkshortcut工具。

但这是问题所在。如果Cygwin 处理了这些本机快捷方式,如 任何其他符号链接,则不能将Microsoft .lnk文件存档到tar 存档中,并将所有信息 都保存在其中。经过拆包,这些 快捷方式就会失去所有的 额外的信息,就没有 比标准的Cygwin 符号连接不同。因此,这两种类型的链接的处理方式会有所不同。 不幸的是,这意味着创建和使用符号连接 的 普通的Unix方式不符合本地 Windows快捷的工作。

+0

是不是cygwin文档太棒了! – 2010-07-27 13:32:57

10

Windows将无法读取Cygwin创建的符号链接,但可以使用Windows命令创建Windows符号链接,并且Cygwin会将它们视为符号链接。

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

对于XP,在“Windows资源工具包工具”包含了一个称为LINKD,可用于创建目录的链接。

11

两年后,我找到了答案

CYGWIN=winsymlinks:native 
ln -s SOURCE TARGET 

The CYGWIN environment variable

+3

这只适用于我,当我以管理员身份运行cygwin时。如果我以普通用户身份运行,则会回退到传统风格的cygwin链接。 – gdw2 2015-01-29 20:01:07

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`)进行命令替换。