Доступ к символической ссылке Cygwin из Windows - PullRequest
11 голосов
/ 27 июля 2010

Я новичок в Cygwin. Я создал символическую ссылку следующим образом

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

и когда я проверяю диск D через Windows, я вижу системный файл с именем foo. Есть ли способ заставить foo действовать как папка для Windows вместо системного файла?

Ответы [ 4 ]

11 голосов
/ 23 июня 2012

Два года спустя, но у меня есть ответ

CYGWIN=winsymlinks:native
ln -s SOURCE TARGET

Переменная среды CYGWIN

10 голосов
/ 29 июля 2010

Windows не сможет читать символические ссылки, созданные Cygwin, но вы можете создавать символические ссылки Windows с помощью команд Windows, и Cygwin будет рассматривать их как символические ссылки.

В Vista и 7 это можно сделать с помощью mklink. Это встроенный cmd.exe, а не отдельная утилита, поэтому, если вы хотите вызвать его из оболочки bash, вам нужно выполнить команду «cmd / c mklink», и, конечно, он будет понимать только пути Windows.

Для XP «Инструменты комплекта ресурсов Windows» содержат утилиту linkd, которую можно использовать для создания ссылок на каталоги.

8 голосов
/ 27 июля 2010

Не то, что я знаю. Cygwin не обновляет ОС, чтобы иметь символические ссылки, скорее, он позволяет «подделывать» символические ссылки из оболочки Cygwin. Вы можете настроить оболочку на использование файлов Windows LNK, которые могут делать то, что вы хотите, но ...

Из документации Cygwin :

Создание ярлыков с помощью cygutils

Другая проблемная область находится между Ссылки в стиле Unix, которые связывают один файл в другой, и файлы Microsoft .lnk, которые предоставляют ярлык для файла. Они кажутся похожими на первый взгляд, но, на самом деле, довольно разные. От по умолчанию Cygwin не создает символические ссылки как файлы .lnk, но есть возможность сделать это, см. раздел называется «среда CYGWIN переменная». Эти символические ссылки .lnk файлы совместимы с Windows-созданными файлы .lnk, но они все еще разные. Они не включают в себя большую часть информация, которая доступна в стандартный ярлык Microsoft, такой как рабочий каталог, иконка и др. Пакет Cygutils включает в себя утилита mkshortcut для создания стандартные нативные файлы Microsoft .lnk.

Но вот проблема. Если Cygwin обрабатывал эти родные ярлыки, такие как любую другую символическую ссылку, вы не могли архивировать файлы Microsoft .lnk в tar архивировать и хранить всю информацию в них. После распаковки эти ярлыки потеряли бы все дополнительная информация и не будет отличается от стандартного Cygwin символьные ссылки. Поэтому эти два типа ссылки обрабатываются по-разному. К сожалению, это означает, что обычный Unix способ создания и использования символические ссылки не работает с родным Ярлыки Windows.

3 голосов
/ 16 марта 2013

Один альтернативный способ вызова mklink (/ d создает ссылку на каталог) без функции:

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

В этом примере для подстановки команд используются обратные символы (`команда`).

...