verificar soft simbolico remover permiten para link fuertes fisico enlaces enlace eliminar directorios crear acceso linux terminal symlink

linux - soft - Crear un enlace simbólico de directorio en Ubuntu



no se permiten enlaces fuertes para directorios (3)

A continuación se muestra mi código para crear un enlace simbólico de un directorio:

sudo ln -s /usr/local/nginx/conf/ /etc/nginx

Ya he creado el directorio /etc/nginx . Solo quiero que el contenido del directorio de origen ( /usr/local/nginx/conf/ ) esté en el contenido del directorio de destino ( /etc/nginx ). Pero cuando ejecuto el código, /etc/nginx contiene un directorio llamado conf , en lugar de los contenidos de conf . Ese directorio contiene los contenidos que quiero, pero en la ubicación incorrecta.

¿Por qué puso un directorio en la carpeta de destino, en lugar de simplemente poner el contenido del directorio en la carpeta de destino?


En script es útil algo como esto:

if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi

previene antes de volver a crear el enlace simbólico "malo" en bucle después de volver a ejecutar el script


Eso es lo que está documentado para hacer cuando el objetivo ya existe y es un directorio. Si desea que /etc/nginx sea un enlace simbólico en lugar de contener un enlace simbólico, ¡es mejor que no lo cree primero como un directorio!


Este es el comportamiento de ln si el segundo argumento es un directorio. Se coloca un enlace a la primera arg dentro de ella . Si desea que /etc/nginx sea ​​el enlace simbólico, primero debe eliminar ese directorio y ejecutar el mismo comando.