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 creé 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 del contenido deconf
. 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?
bind mount
función de Linux . ejemploRespuestas:
Este es el comportamiento de
ln
si el segundo argumento es un directorio. Coloca un enlace al primer argumento dentro de él . Si desea/etc/nginx
ser el enlace simbólico, primero debe eliminar ese directorio y ejecutar el mismo comando.fuente
Eso es lo que
ln
está documentado cuando el destino ya existe y es un directorio. Si quieres/etc/nginx
a ser un enlace simbólico en lugar de contener un enlace simbólico, es mejor que no hubiera crearlo como un directorio primero!fuente
En script es útil algo como esto:
evita antes de volver a crear un enlace simbólico en bucle "malo" después de volver a ejecutar el script
fuente