Похоже, что они оба существуют по наследству, чтобы быть совместимыми между различными версиями Unix. Вы должны иметь возможность использовать один из них, поскольку они делают то же самое, но имейте в виду, что если система, в которой вы работаете, не соответствует последним стандартам, она может отсутствовать.
Обе формы присутствуют в Single Unix Specification version 3/POSIX 2004, без оговорок:
-h
путь
Правда, если
путь решает в файл, который существует и является символической ссылкой , False, если
имя пути не может быть разрешено или , если
путь разрешает файл, который существует, но не является символической ссылкой. Если конечный компонент
путь является символической ссылкой , эта символьная ссылка не соблюдается.
-L
путь
Правда, если
путь решает в файл, который существует и является символической ссылкой. False, если
имя пути не может быть разрешено или , если
путь разрешает файл, который существует, но не является символической ссылкой. Если конечный компонент
путь является символической ссылкой , эта символьная ссылка не соблюдается.
Согласно странице test(1)
людей на Mac OS X и FreeBSD (обратите внимание, что это предупреждение может быть устаревшим, она 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.
И судя по всему, some versions of Solaris test
поддерживают только -h
и (обратно 2003) some software has switched to -h
по соображениям совместимости, поэтому -h
действительно может быть вашим лучшим выбором.
Я ценю способ ответить на мой вопрос. –