On 2021-07-19 00:50, Patrick Reader wrote:
On 19/07/2021 08:48, Kamil Dudka wrote:
On Monday, July 19, 2021 2:29:18 AM CEST James Lu wrote:
"ln" should write a warning to stderr if the source file doesn't exist.
ln writes an error message to stderr if the source file does not exist:

$ mkdir new-dir
$ cd new-dir
$ ln does-not-exist target
ln: failed to access 'does-not-exist': No such file or directory

I'm guessing they meant `ln -s`.

Symbolic links with nonexistent targets are legitimate and useful.

They can be used to stash information that isn't intended to be
a pointer to an object in the file system at all:

   ln -sf "<insert hash here>" hash

A symlink is essentially a tiny text file where you can store
info, subject to some easy-to-meet restrictions.

Dangling links can be prepared in a file system structure that will
be installed somewhere, where the links will resolve:

  ln -sf /etc/alternatives/netcat $(DESTDIR)/bin/netcat

An option to emit a warning could be mildly useful, but it's
nothing you can't check yourself *after* the symlink is made:

  ln -sf $TARGET $LINK   # quoting elided for brevity

  [ -e $LINK ] || printf "warning: link target %s doesn't exist" $TARGET

Doing the check before the link is made is more involved because
a relative link target is resolved relative to the link's location.

Plus if it is buggy, then it won't match what the operating system
says; the ultimate arbiter of whether the link is dangling is
to create it and actually test it.


Reply via email to