Jason McIntyre writes: > On Sun, Jun 16, 2024 at 03:05:24AM -0300, Crystal Kolipe wrote: > > On Sat, Jun 15, 2024 at 06:45:21PM -0500, Tim Chase wrote: > > > According to > > > > > > $ man [ | grep -A4 -e "-L.*f" > > > -L file > > > True if file exists and is a symbolic link. This operator is for > > > compatibility purposes. Do not rely on its existence; use -h > > > instead. > > > > There is definitely a discrepency between manual and source, because the > > source contains a comment saying that -h is for backwards compatibility: > > > > {"-h", FILSYM, UNOP}, /* for backwards compat */ > > > > and that comment has been there since the code was imported to NetBSD in > > revision 1.13 in 1994.
When test's -h option was first added to OpenBSD's tree in 1995 that was the option marked as existing only for compatibility purposes, this was switched in 2003: Changes since 1.16: +6 -6 lines encourage people to use -h rather than -L; document -L as compatibility option; slight sync with NetBSD description; ok otto@ millert@ I'd guess there was some discussion about it but I can't be bothered to look for it. The ksh manpage lists both -h and -L without prioritising either. I think it's safe to say we can rely on both flags existing now in all variations of the tool. Supporting both is what? Half a dozen opcodes? [[ is more expressive anyway. Matthew ps. While we're on the subject, perl calls its (only) variant -l. ]]
--- /usr/src/bin/test/test.1 Sat Aug 19 05:23:44 2023 +++ /tmp/test.1 Sun Jun 16 15:00:02 2024 @@ -118,11 +118,6 @@ True if .Ar file exists and is a symbolic link. -This operator is for compatibility purposes. -Do not rely on its existence; -use -.Fl h -instead. .It Fl n Ar string True if the length of .Ar string