Parece que ambos existen por razones de herencia, para ser compatibles entre las diferentes versiones de Unix. Debería poder utilizar cualquiera de ellos, ya que hacen exactamente lo mismo, pero tenga en cuenta que si el sistema en el que se está ejecutando no cumple con los estándares más recientes, es posible que le falte uno u otro.
Ambas formas están presentes en el Single Unix Specification version 3/POSIX 2004, sin salvedades:
-h
ruta
True si
ruta resuelve en un archivo que existe y es un enlace simbólico . False si
nombre de ruta no se puede resolver, o si
nombre de ruta se resuelve en un archivo que existe pero que no es un enlace simbólico. Si el componente final de
ruta nombre es un enlace simbólico , no se sigue ese enlace simbólico.
-L
ruta
True si
ruta se resuelve en un archivo que existe y es un enlace simbólico. False si
nombre de ruta no se puede resolver, o si
nombre de ruta se resuelve en un archivo que existe pero que no es un enlace simbólico. Si el componente final de
ruta nombre es un enlace simbólico , no se sigue ese enlace simbólico.
De acuerdo con la página test(1)
hombre en Mac OS X y FreeBSD (tenga en cuenta que esta advertencia puede ser obsoleta, sino que first appeared in NetBSD in 1996):
-h file True if file exists and is a symbolic link. This operator
is retained for compatibility with previous versions of
this program. Do not rely on its existence; use -L instead.
Y al parecer, some versions of Solaris test
sólo soportan -h
, y (de nuevo en 2003) some software has switched to -h
por razones de compatibilidad, por lo que -h
puede ser su mejor opción.
Aprecio la manera de responder mi pregunta. –