GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verhalten von cd/bash bei symbolischen Links

bash verfolgt den logischen aktuellen Verzeichnispfad, wie in Ihrer Eingabeaufforderung gezeigt, und interpretiert Dinge wie cd .. danach. Dies macht die Sache etwas konsistenter, wenn Sie solche Pfade nur in cd verwenden (oder pushd ), auf Kosten unerwarteter Dinge, die passieren, wenn Sie dann erwarten, dass dasselbe mit Pfaden in Befehlsargumenten (oder innerhalb von Befehlen; emacs) passiert und vim haben ihre eigenen konfigurierbaren Regeln für die Behandlung von Symlinks, aber die meisten Befehle verlassen sich darauf, dass der Kernel damit umgeht).


Gemäß help cd ,

  Options:
      -L        force symbolic links to be followed: resolve symbolic
                links in DIR after processing instances of `..'
      -P        use the physical directory structure without following
                symbolic links: resolve symbolic links in DIR before
                processing instances of `..'

Mit anderen Worten:-L bedeutet, das logische zu verwenden Struktur, während -P verwendet das tatsächlich Physische Verzeichnisstruktur.

Die logische Struktur sieht folgendermaßen aus:

$ tree a
a
└── b
    └── symlink -> ..

Die tatsächliche physische Struktur, wenn Sie zu a/b/symlink gehen ist,

a

Wenn Sie die echte verwenden möchten .. , dann müssen Sie auch cd -P verwenden :

          The -P option says to use the physical directory
          structure instead of following symbolic links (see
          also the -P option to the set builtin command);
          the -L option forces symbolic links to be followed.

Ein Beispiel,

$ cd
$ cd a/b/symlink   # physical location is at a/
$ cd ..            # now is at a/b
$ cd symlink       # goes back to a/b/symlink
$ cd -P ..         # follow physical path (resolve all symlinks)
$ pwd -P           # -P is optional here to show effect of cd ..
/home/sarnold
$ 

Linux
  1. So erstellen Sie harte und symbolische Links in Linux

  2. Umgebungsvariablen in symbolischen Links

  3. Wie kopiere ich symbolische Links?

  4. Ersetzen Sie symbolische Links durch Dateien

  5. Zu viele Ebenen symbolischer Links

Eine einfache Möglichkeit, symbolische Links in Linux aufzulisten

So entfernen Sie symbolische Links unter Linux

So erstellen Sie symbolische Links unter Linux

Was sind symbolische Links in Linux? Wie erstellt man symbolische Links?

So erhalten Sie eine Liste symbolischer Links unter Linux

rsync und symbolische Links