Cygwin tool to differ junctions from soft links?
Brian Inglis
Brian.Inglis@Shaw.ca
Thu Nov 16 20:30:26 GMT 2023
On 2023-11-16 11:55, matthew patton via Cygwin wrote:
> On Thursday, November 16, 2023 at 03:50:24 AM EST, Andrey Repin wrote:
>>> Does Cygwin have a command line tool (Scriptable!) which can be used to
>>> differ between soft links and Windows junctions?
Distinguishing between types of Windows reparse points is not a POSIX or
emulation function, so not of interest to Cygwin developers.
I thought about it when support was added, but then realized there was no nice
place to add it within the platform, without going the non-portable Windows
specific utility route, as in lsattr.
You could in a function or script by running lsattr -d which seems to fail on
reparse points, then ls -dl which shows a Symbolic Link with a relative path,
and a Junction with an absolute path, although it could just be a Symbolic Link
with an absolute path.
Perhaps something like the following would be useful to Windows users who want
to know this stuff:
https://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
>> It would be easier to help you, if you specify the purpose of your
>> request. I.e. what you want to achieve with such tool.
> AFAIK no. what I do is re-implement 'ln' with a wrapper because the Cygwin
> behavior (Junctions) was driving me up the wall.
> https://github.com/tb3088/shell-environment/blob/ccf7aa161899c2c4ebe2d9e980e674bc726a3ef3/.functions_os.CYGWIN_NT#L9
Cygwin never creates Windows Directory or Filesystem Junction reparse points,
and by default it uses its own version of Unix path symlink files, preceded by a
flag ("magic cookie") value, and with system attribute, to allow compatibility
with FAT file system limitations, or else NFS symlinks on NFS filesystems.
CYGWIN env var settings allow creation of Windows shortcuts and symbolic link
reparse points instead of its default (equivalent to winsymlinks:sys), when
supported by the file system and Windows release:
https://cygwin.com/cygwin-ug-net/using-cygwinenv.html
https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks
--
Take care. Thanks, Brian Inglis Calgary, Alberta, Canada
La perfection est atteinte Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut
-- Antoine de Saint-Exupéry
More information about the Cygwin
mailing list