vote up 0 vote down star

I'm running Windows XP and Cygwin. Is there a way to create some kind of symbolic link so that, if a non-Cygwin program is passed /cygdrive/c as a command line argument, it looks in c:\ for whatever file/directory it needs?

flag

25% accept rate

2 Answers

vote up 3 vote down check

There is a way to create symbolic links on Windows, download the Junction tool from Microsoft and use it to create a symbolic link (On NTFS they are implemented as junction points). And then create a \cygdrive\c directory and create a junction point form it to c:\

md \cygdrive\c
junction \cygdrive\c \

Now this may or may not work, I don't have cygwin installed. It relies on:

  1. Programs interpreting the forward slashes in /cygdrive/c as backslashes (which some may do)
  2. Having your working directory set to the drive with the symlinks since paths starting with \ are relative to the current drive.
link|flag
Obviously not a perfect solution for the reasons you mentioned, but definitely good enough for my needs. – dsimcha Nov 5 at 20:15
Junctions are not the same as symlinks (which only appeared in Vista). – grawity Nov 5 at 20:59
But they're good enough. I have this solution up and running. – dsimcha Nov 7 at 17:18
vote up 0 vote down

If you are calling cygwin-unaware programs from cygwin's bash and passing paths as arguments like

$ windowsProgram.exe "pathArg1" "pathArg2"

then maybe convert every pathArg into "$(cygpath -w pathArg)" i.e. say

$ windowsProgram.exe "$(cygpath -w pathArg1)" "$(cygpath -w pathArg2)"

. Ugly, but should work?

link|flag

Your Answer

Get an OpenID
or
never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.