2010-07-27 60 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`)進行命令替換。