Symbolic Linking On WinXP

0

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?

dsimcha

Posted 2009-11-05T18:58:40.913

Reputation: 1 074

Answers

3

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.

shf301

Posted 2009-11-05T18:58:40.913

Reputation: 7 582

Obviously not a perfect solution for the reasons you mentioned, but definitely good enough for my needs. – dsimcha – 2009-11-05T20:15:24.003

Junctions are not the same as symlinks (which only appeared in Vista). – user1686 – 2009-11-05T20:59:56.673

But they're good enough. I have this solution up and running. – dsimcha – 2009-11-07T17:18:38.890

0

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?

Ljubomir Josifovski

Posted 2009-11-05T18:58:40.913

Reputation: 49