GNU/Linux >> Znalost Linux >  >> Linux

Chování cd/bash na symbolických odkazech

bash sleduje logickou cestu k aktuálnímu adresáři, jak je znázorněno ve vaší výzvě, a interpretuje věci jako cd .. podle toho. Díky tomu jsou věci trochu konzistentnější, pokud takové cesty používáte pouze v cd (nebo pushd ), za cenu neočekávaných věcí, které se stanou, pokud pak očekáváte, že se totéž stane s cestami v argumentech příkazu (nebo uvnitř příkazů; emacs a vim mají svá vlastní konfigurovatelná pravidla pro manipulaci se symbolickými odkazy, ale většina příkazů spoléhá na to, že se s tím vypořádá jádro).


Podle 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 `..'

Jinými slovy -L znamená použití logického struktura, zatímco -P používá ve skutečnosti fyzické adresářová struktura.

Logická struktura je taková,

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

Skutečná fyzická struktura, když přejdete na a/b/symlink je,

a

Pokud chcete použít skutečné .. , pak musíte také použít cd -P :

          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.

Příklad,

$ 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. Jak vytvořit pevné a symbolické odkazy v Linuxu

  2. Jak zkopírovat symbolické odkazy?

  3. Jak změnit vlastnictví ze symbolických odkazů?

  1. Proměnné prostředí v symbolických odkazech

  2. Hromadná aktualizace symbolických odkazů rekurzivně

  3. Nahraďte symbolické odkazy soubory

  1. Příkaz Ln:Jak vytvořit symbolické odkazy v Linuxu

  2. Rozdíl mezi symbolickými a pevnými odkazy?

  3. Příliš mnoho úrovní symbolických odkazů