Die einfachste Möglichkeit, eine Verknüpfung zum aktuellen Verzeichnis als absoluten Pfad herzustellen, ohne die gesamte Pfadzeichenfolge eingeben zu müssen, wäre
ln -s "$(pwd)/foo" ~/bin/foo_link
Das target
(erste) Argument für den ln -s
Befehl bezieht sich auf die Position des symbolischen Links und nicht auf Ihr aktuelles Verzeichnis. Es ist hilfreich zu wissen, dass der erstellte Symlink (das zweite Argument) einfach den Text enthält, den Sie für das erste Argument angegeben haben.
Wenn Sie also Folgendes tun:
cd some_directory
ln -s foo foo_link
und dann diesen Link bewegen
mv foo_link ../some_other_directory
ls -l ../some_other_directory
Sie werden sehen, dass foo_link
versucht wird, foo
auf das Verzeichnis zu verweisen, in dem es sich befindet. Dies funktioniert auch mit symbolischen Links, die auf relative Pfade verweisen. Wenn Sie Folgendes tun:
ln -s ../foo yet_another_link
Wechseln Sie dann yet_another_link
in ein anderes Verzeichnis, und überprüfen Sie, wo es hinweist. Sie werden feststellen, dass es immer auf verweist ../foo
. Dies ist das beabsichtigte Verhalten, da symbolische Verknüpfungen oft Teil einer Verzeichnisstruktur sein können, die sich in verschiedenen absoluten Pfaden befinden kann.
In Ihrem Fall, wenn Sie den Link durch Eingabe erstellen
ln -s foo ~/bin/foo_link
foo_link
enthält nur einen Link zu foo
, relativ zu seiner Position. Wenn Sie $(pwd)
den Namen des Zielarguments voranstellen, wird lediglich der absolute Pfad des aktuellen Arbeitsverzeichnisses hinzugefügt, sodass die Verknüpfung mit einem absoluten Ziel erstellt wird.