Below is my code for creating a symlink of a directory:
sudo ln -s /usr/local/nginx/conf/ /etc/nginx
I already created the directory
/etc/nginx. I just want the contents of the source directory (
/usr/local/nginx/conf/) to be in the contents of the target directory (
/etc/nginx). But when I execute the code,
/etc/nginx contains a directory called
conf, instead of the contents of
conf. That directory contains the contents I want, but in the wrong location.
Why did it put a directory in the target folder, instead of just putting the contents of the directory in the target folder?
preguntado el 01 de febrero de 12 a las 22:02
This is the behavior of
ln if the second arg is a directory. It places a link to the first arg dentro de eso. Si tu quieres
/etc/nginx to be the symlink, you should remove that directory first and run that same command.
Eso es lo
ln is documented to do when the target already exists and is a directory. If you want
/etc/nginx a be a symlink rather than contener a symlink, you had better not create it as a directory first!
In script is useful something like this:
if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi
it prevents before re-create "bad" looped symlink after re-run script