Ответ 1
Это поведение ln
, если второй arg является каталогом. Он помещает ссылку на первый arg внутри него. Если вы хотите, чтобы /etc/nginx
была символической ссылкой, вы должны сначала удалить этот каталог и запустить ту же самую команду.
Ниже мой код для создания символической ссылки в каталоге:
sudo ln -s /usr/local/nginx/conf/ /etc/nginx
Я уже создал каталог /etc/nginx
. Я просто хочу, чтобы содержимое исходного каталога (conf) находилось в содержимом целевого каталога (nginx). Но когда я выполняю код, /etc/nginx
содержит каталог с именем "conf", а не содержимое "conf". Этот каталог содержит содержимое, которое я хочу, но в неправильном месте.
Итак, зачем он помещал каталог в целевую папку вместо того, чтобы просто помещать содержимое каталога в целевую папку?
Это поведение ln
, если второй arg является каталогом. Он помещает ссылку на первый arg внутри него. Если вы хотите, чтобы /etc/nginx
была символической ссылкой, вы должны сначала удалить этот каталог и запустить ту же самую команду.
То, что ln
документируется, когда цель уже существует и является каталогом. Если вы хотите, чтобы /etc/nginx
был, символьная ссылка, а не содержала символическую ссылку, вам лучше не создавать ее как каталог сначала!
В script полезно что-то вроде этого:
if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi
он предотвращает повторное создание "плохой" циклической символической ссылки после повторного запуска script