Voici mon code pour créer un lien symbolique d'un répertoire:
sudo ln -s /usr/local/nginx/conf/ /etc/nginx
J'ai déjà créé le répertoire /etc/nginx
. Je veux juste que le contenu du répertoire source ( /usr/local/nginx/conf/
) soit dans le contenu du répertoire cible ( /etc/nginx
). Mais lorsque j'exécute le code, /etc/nginx
contient un répertoire appelé conf
, au lieu du contenu de conf
. Ce répertoire contient le contenu que je veux, mais au mauvais endroit.
Pourquoi at-il mis un répertoire dans le dossier cible, au lieu de simplement mettre le contenu du répertoire dans le dossier cible?
bind mount
fonction Linux . exempleRéponses:
C'est le comportement de
ln
si le deuxième argument est un répertoire. Il place un lien vers le premier argument à l' intérieur . Si vous voulez/etc/nginx
être le lien symbolique, vous devez d'abord supprimer ce répertoire et exécuter cette même commande.la source
C'est ce qui
ln
est documenté à faire lorsque la cible existe déjà et est un répertoire. Si vous voulez/etc/nginx
d' être un lien symbolique plutôt que contenir un lien symbolique, vous feriez mieux de ne pas créer comme un premier répertoire!la source
Dans le script est quelque chose d'utile comme ceci:
il empêche avant de recréer le "mauvais" lien symbolique en boucle après la réexécution du script
la source