Создайте символическую ссылку Directory в Ubuntu

Ниже мой код для создания символической ссылки в каталоге:

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

Я уже создал каталог /etc/nginx. Я просто хочу, чтобы содержимое исходного каталога (conf) находилось в содержимом целевого каталога (nginx). Но когда я выполняю код, /etc/nginx содержит каталог с именем "conf", а не содержимое "conf". Этот каталог содержит содержимое, которое я хочу, но в неправильном месте.

Итак, зачем он помещал каталог в целевую папку вместо того, чтобы просто помещать содержимое каталога в целевую папку?

Ответ 1

Это поведение ln, если второй arg является каталогом. Он помещает ссылку на первый arg внутри него. Если вы хотите, чтобы /etc/nginx была символической ссылкой, вы должны сначала удалить этот каталог и запустить ту же самую команду.

Ответ 2

То, что ln документируется, когда цель уже существует и является каталогом. Если вы хотите, чтобы /etc/nginx был, символьная ссылка, а не содержала символическую ссылку, вам лучше не создавать ее как каталог сначала!

Ответ 3

В script полезно что-то вроде этого:

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

он предотвращает повторное создание "плохой" циклической символической ссылки после повторного запуска script