Créer un lien symbolique de répertoire dans Ubuntu [fermé]
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 le contenu du répertoire source (/usr/local/nginx/conf/
) pour être dans le contenu du répertoire cible (/etc/nginx
). Mais quand 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 avait-il mis un répertoire dans le dossier cible, au lieu de simplement mettre l' contenu du répertoire dans le dossier cible?
3 réponses
C'est le comportement de ln
si le second argument est un répertoire. Il met un lien vers le premier arg à l'intérieur. Si vous voulez que /etc/nginx
soit le lien symbolique, vous devez d'abord supprimer ce répertoire et exécuter la même commande.
C'est ce que ln
est documenté pour faire lorsque la cible existe déjà et est un répertoire. Si vous voulez /etc/nginx
à est un lien symbolique plutôt que contiennent un lien symbolique, vous feriez mieux de ne pas créer un répertoire de premier!
Dans le script est utile quelque chose comme ceci:
if [ ! -d /etc/nginx ]; then ln -s /usr/local/nginx/conf/ /etc/nginx > /dev/null 2>&1; fi
Il empêche avant de recréer le lien symbolique en boucle "mauvais" après le script de réexécution