2010-07-27 36 views
11

Soy bastante nuevo en cygwin. He creado un enlace simbólico de la siguiente maneraAccediendo a un cygwin symlink desde Windows

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

y cuando compruebo la unidad D a través de las ventanas, veo un archivo de sistema llamado foo. ¿Hay alguna manera de hacer que foo actúe como una carpeta para Windows en lugar de un archivo de sistema?

Respuesta

8

No es que yo sepa. Cygwin no actualiza el sistema operativo para tener enlaces simbólicos, sino que le permite 'simular' enlaces simbólicos desde el interior del shell Cygwin. Puede configurar la cáscara para utilizar archivos de Windows LNK, lo que puede hacer lo que quiera, pero ...

Desde el Cygwin Documentation:

Creación de accesos directos con cygutils

Otro problema es entre Enlaces de estilo Unix, que vinculan un archivo a otro, y archivos .lnk de Microsoft, que proporcionan un acceso directo a un archivo. Parecen similares a primera vista pero, en realidad, son bastante diferentes. Por predeterminado, Cygwin no crea enlaces simbólicos como archivos .lnk, pero hay una opción para hacerlo, consulte la sección llamada "La variable del entorno CYGWIN". Estos archivos .lnk de enlace simbólico son compatibles con archivos .lnk creados por Windows, pero todavía son diferentes. No incluyen gran parte de la información que está disponible en un acceso directo de Microsoft estándar , como el directorio de trabajo, un icono, etc. El paquete incluye una utilidad cygutils mkshortcut para la creación de archivos estándar nativa de Microsoft .lnk.

Pero aquí está el problema. Si Cygwin manejó estos atajos nativos como cualquier otro enlace simbólico, no podría archivar archivos .lnk de Microsoft en archivos tar y mantener toda la información en ellos. Después de desempaquetar, estos atajos habrían perdido toda la información adicional y no serían diferentes de los enlaces simbólicos estándar de Cygwin . Por lo tanto, estos dos tipos de enlaces se tratan de manera diferente. Desafortunadamente, esto significa que la forma habitual de Unix de crear y usar enlaces simbólicos no funciona con los accesos directos nativos de Windows .

+0

¡no es la documentación de cygwin genial! –

10

Windows no podrá leer los enlaces simbólicos creados por Cygwin, pero puede crear enlaces simbólicos de Windows utilizando comandos de Windows, y Cygwin los tratará como enlaces simbólicos.

En Vista y 7, esto se puede hacer con 'mklink'. Este es un built-in cmd.exe en lugar de una utilidad independiente, por lo que si quieres invocarlo desde un shell bash tienes que hacer 'cmd/c mklink', y por supuesto, solo comprenderá las rutas de Windows.

Para XP, las 'Herramientas del kit de recursos de Windows' contienen una utilidad llamada linkd que se puede usar para crear enlaces de directorio.

11

Dos años más tarde, pero tengo la respuesta

CYGWIN=winsymlinks:native 
ln -s SOURCE TARGET 

The CYGWIN environment variable

+3

Esto solo funciona para mí cuando ejecuto cygwin como administrador. Si corro como un usuario normal, vuelve al estilo tradicional de los enlaces de cygwin. – gdw2

3

Una forma alternativa de llamar MKLINK (/ D crea directorio de enlaces) sin función:

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

Este ejemplo usa backticks (`command`) para la sustitución de comandos.

Cuestiones relacionadas