Dentro de un script bash, sé que puedo verificar si un archivo es un enlace simbólico con la siguiente sintaxis
if [ -L $path ]
¿Alguien sabe cómo probaría si esa ruta estaba vinculada a una ruta en particular? Por ejemplo, quiero verificar si el objetivo de $pathes /some/where.

readlinkruta conocida y compararla con la ruta que estás probando?if [ -L "$path" ]) , a menos que tenga una buena razón para no hacerlo y esté seguro de saber lo que está haciendo.Respuestas:
Si desea verificar si
$pathes un enlace simbólico cuyo objetivo es/some/where, puede usar lareadlinkutilidad. No es POSIX, pero está disponible en muchos sistemas (GNU / Linux, BusyBox, * BSD, ...).Tenga en cuenta que esta es una comparación de texto exacta. Si el objetivo del enlace es
/some//where, o si eswherey el valor de$pathes/some/link, entonces los textos no coincidirán.Muchas versiones
readlinkadmiten la opción-f, que canoniza la ruta al expandir todos los enlaces simbólicos.Muchos shells, incluidos dash, ksh, bash y zsh, admiten al
-efoperador en eltestbuiltin para probar si dos archivos son iguales (enlaces duros al mismo archivo, después de seguir enlaces simbólicos). Esta característica también es ampliamente compatible pero no POSIX.fuente
Para evitar problemas con una ruta relativa y absoluta, y "/" al final de una ruta o enlace:
fuente
readlinkno parece ser necesario,realpathresolverá automáticamente el enlace simbólico.