Ihre Frage ist etwas verwirrend.
Sie fragten: "Gibt es eine Möglichkeit, dass ich von
~/dir1
[...] aus einen Symlink darauf setzen kann ?" Ich nehme an, Sie meinten "von~/dir2
", basierend auf dem Rest Ihres Beitrags?Dein erster Befehl
$ ln -s ./dir1/file.txt ./dir2/file.txt
tut nicht das, was Sie denken. Wenn Sie sich noch in Ihrem Heimatverzeichnis befinden, erstellt der obige Befehl einen Symlink, dessen eigener Pfad ist
~/dir2/file.txt
, und dieser Symlink verweist buchstäblich auf den Pfad./dir1/file.txt
. Da sich der Symlink im Verzeichnis befindet~/dir2
, wird dieser Zielpfad in aufgelöst~/dir2/./dir1/file.txt
, was sich weiter auflöst~/dir2/dir1/file.txt
(wahrscheinlich nicht vorhanden und nicht das, was Sie möchten). Ich bezweifle also, warum Sie gesagt haben, dass sich das löst~/dir1/dir2/file.txt
.Ihr 2. Befehl schlägt fehl, da es kein Verzeichnis gibt,
../dir2
in das der Symlink eingefügt werden kann. Dies bedeutet, dass die Fehlermeldung dies bedeutet.Um deine Frage zu beantworten, ja. Dem Betriebssystem ist es egal, ob Ihr Symlink auf einen Pfad verweist, für den kein gültiges Dateisystemobjekt vorhanden ist.
Wahrscheinlich ist das, was Sie wirklich wollen, etwas
ln -s ../dir1/file.txt ./dir2/file.txt
Ich vermute? Dieser Befehl erstellt einen Symlink, dessen eigener Pfad ist ./dir2/file.txt
, und sein Ziel ist der relative Literalpfad ../dir1/file.txt
. Der letzte, absolute Pfad, auf den der Symlink verweist, ist der ~/dir2/../dir1/file.txt
, der sich in auflöst ~/dir1/file.txt
.
Beachten Sie, dass das ~
Symbol ein durch die Shell erweiterbares Zeichen ist, das sich zum absoluten Pfad Ihres Home-Verzeichnisses erweitert. ~
-Erweiterung ist nicht Teil der OS-Pfadauflösung.
Vorgeschlagene Literatur
Linux Manpages von path_resolution(7)
, symlink(7)
, ln(1)
und ln(1p)
.
Bearbeiten
Klarstellungen und empfohlenes Lesen.