Ich möchte einen Symlink zu erstellen, ~/foo/
aber wenn ich das schreibe, ~
wird immer der absolute Home-Pfad aufgelöst. Ich habe ../
s in der Vergangenheit verwendet und sie funktionieren gut, ist ~
nicht erlaubt?
Der Grund, warum ich das tun möchte, ist, dass ~
der Computer je nach Computer und Linux / OSX einen anderen absoluten Pfad hat, aber immer auf mein Home-Verzeichnis verweist.
Ich möchte einen solchen Link in ein Git-Repo aufnehmen, das auf mehreren Computern synchronisiert ist.
environment-variables
symlink
home
Jonathan H.
quelle
quelle
~
.$HOME
es immer gelöst wird, sobald ich den Link erstelle (nicht wahr?) Und daher maschinenabhängig ist.Antworten:
Das Tilde-Zeichen wird von der Shell erweitert, bevor der Befehl ausgeführt wird. Es wird durch den Wert von ersetzt
$HOME
. Dasln
Dienstprogramm, das den Symlink erstellt, sieht also niemals die Tilde, sondern nur den vollständigen Pfad. Dieser Pfad wird im Symlink gespeichert.Unter Linux gibt es keine Möglichkeit, eine Symlink-Variable zu erstellen. Sie werden vom Kernel verwaltet. Der Kernel berücksichtigt keine Umgebungsvariablen.
BSD erlaubt solche Links. Sie werden als variante symbolische Links bezeichnet . Sie können so etwas tun:
Mit
varsym
diesen Variablen kann dann gesetzt werden:quelle
Um Ihre Frage zu symbolischen Links zu beantworten, "ist ~ nicht erlaubt?".
Antwort: ~ ist nicht erlaubt. Sie können damit einen solchen Symlink erstellen, der jedoch nicht in das Ausgangsverzeichnis aufgelöst wird, wenn Sie ihn befolgen.
quelle