Pregunta:
Estoy tratando de crear un enlace simbólico en mi directorio de inicio que apunte a un directorio en mi disco duro externo.
Funciona bien cuando lo especifico así:
cd ~
ln -s /run/media/name/exhdd/Data/ Data
Sin embargo, crea un enlace defectuoso cuando intento esto:
cd /run/media/name/exhdd
ln -s Data/ ~/Data
Esto crea un vínculo que no puedo cd
en.
Cuando lo intento, bash se queja:
bash: cd: Data: Too many levels of symbolic links
El enlace simbólico de datos en mi casa también está coloreado en rojo cuando ls
está configurado para mostrar una salida en color.
¿Por qué está pasando esto? ¿Cómo puedo crear un enlace de esa manera? (Quiero crear un enlace simbólico a un directorio en mi directorio de trabajo en otro directorio).
Editar: de acuerdo con esta respuesta de StackOverflow, si el segundo argumento (en mi caso sería ~ / Data) ya existe y es un directorio, ln
creará un enlace simbólico al objetivo dentro de ese directorio.
Sin embargo, estoy experimentando el mismo problema con:
ln -s Data/ ~/
Respuesta:
Esto es lo que está sucediendo. Si crea un enlace simbólico con una ruta relativa, el enlace simbólico será relativo. Los enlaces simbólicos simplemente almacenan las rutas que les proporcionas. Nunca resuelven caminos hacia caminos completos. Corriendo
$ pwd
/usr/bin
$ ln -s ls /usr/bin/ls2
crea un enlace simbólico llamado ls2
en /usr/bin
a ls
(es decir, /usr/bin/ls
) relativo al directorio en el que se encuentra el enlace simbólico ( /usr/bin
). El comando anterior crearía un enlace simbólico funcional desde cualquier directorio.
$ pwd
/home/me
$ ln -s ls /usr/bin/ls2
Si moviera el enlace simbólico a un directorio diferente, dejaría de apuntar al archivo en /usr/bin/ls
.
Está creando un enlace simbólico que apunta a Data
y lo llama Data
. Se apunta a sí mismo. Tienes que hacer un enlace simbólico con la ruta absoluta del directorio.
ln -s "$(realpath Data)" ~/Data