GNU/Linux >> Linux の 問題 >  >> Linux

シンボリック リンクでの cd/bash の動作

bash プロンプトに示されているように、論理的な現在のディレクトリ パスを追跡し、cd .. のようなものを解釈します。 それによると。 cd でのみそのようなパスを使用する場合、これにより、もう少し一貫性が保たれます。 (または pushd )、コマンド引数内のパス(またはコマンド内; emacs)で同じことが起こると予想すると、予期しないことが起こるという犠牲を払って および vim にはシンボリック リンクの処理に関する独自の設定可能なルールがありますが、ほとんどのコマンドはそれを処理するためにカーネルに依存しています)。


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

つまり、-L 論理を使用することを意味します 構造、-P 実際の物理的な ディレクトリ構造。

論理構造はこんな感じです、

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

a/b/symlink に行ったときの実際の物理構造

a

本物を使用したい場合 .. の場合、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.

例として、

$ 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. Linuxでハードリンクとシンボリックリンクを作成する方法

  2. シンボリック リンクの環境変数

  3. シンボリック リンクを再帰的にバッチ更新する

  1. シンボリックリンクをコピーするには?

  2. シンボリック リンクをファイルに置き換える

  3. シンボリック リンクのレベルが多すぎます

  1. Lnコマンド:Linuxでシンボリックリンクを作成する方法

  2. シンボリックリンクとハードリンクの違いは?

  3. シンボリックリンクから所有権を変更するには?