Ниже приведен мой код для создания символической ссылки на каталог:
sudo ln -s /usr/local/nginx/conf/ /etc/nginx
Я уже создал каталог /etc/nginx
. Я просто хочу, чтобы содержимое исходного каталога ( /usr/local/nginx/conf/
) находилось в содержимом целевого каталога ( /etc/nginx
). Но когда я выполняю код, в нем /etc/nginx
содержится каталог с именем conf
, а не содержимое conf
. Этот каталог содержит содержимое, которое я хочу, но не в том месте.
Почему он поместил каталог в целевую папку, а не просто поместил содержимое каталога в целевую папку?
bind mount
функцию Linux . примерОтветы:
Это поведение,
ln
если второй аргумент является каталогом. Он помещает ссылку на первый аргумент внутри . Если вы хотите/etc/nginx
быть символической ссылкой, вы должны сначала удалить этот каталог и выполнить ту же команду.источник
Это то, что
ln
задокументировано, когда цель уже существует и является каталогом. Если вы хотите ,/etc/nginx
чтобы быть символической ссылки , а не содержать символьную ссылку, то вам лучше не создавать его как каталог первый!источник
В скрипте полезно что-то вроде этого:
предотвращает повторное создание «плохой» зацикленной символической ссылки после повторного запуска скрипта
источник