Unten ist mein Code zum Erstellen eines Symlinks eines Verzeichnisses:
sudo ln -s /usr/local/nginx/conf/ /etc/nginx
Ich habe das Verzeichnis bereits erstellt /etc/nginx
. Ich möchte nur, dass der Inhalt des Quellverzeichnisses ( /usr/local/nginx/conf/
) im Inhalt des Zielverzeichnisses ( /etc/nginx
) enthalten ist. Aber wenn ich den Code ausführe, /etc/nginx
enthält ein Verzeichnis namens conf
anstelle des Inhalts von conf
. Dieses Verzeichnis enthält den gewünschten Inhalt, jedoch am falschen Ort.
Warum wurde ein Verzeichnis in den Zielordner gestellt, anstatt nur den Inhalt des Verzeichnisses in den Zielordner zu legen?
bind mount
Funktion. BeispielAntworten:
Dies ist das Verhalten,
ln
wenn das zweite Argument ein Verzeichnis ist. Es wird ein Link zum ersten Argument darin eingefügt . Wenn Sie/etc/nginx
der Symlink sein möchten , sollten Sie zuerst dieses Verzeichnis entfernen und denselben Befehl ausführen.quelle
Dies
ln
ist dokumentiert, wenn das Ziel bereits vorhanden ist und ein Verzeichnis ist. Wenn Sie möchten , sein , einen Symlink nicht enthalten einen Symlink, sollten Sie besser schaffen es nicht als Verzeichnis zuerst!/etc/nginx
quelle
Im Skript ist so etwas nützlich:
Es verhindert, dass vor dem erneuten Erstellen eines "fehlerhaften" geloopten Symlinks nach dem erneuten Ausführen des Skripts
quelle