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.