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.