ディレクトリと相対パスへのシンボリックリンク

ディレクトリと相対パスへのシンボリックリンク

ディレクトリへの絶対パスを使用してシンボリックリンク(Blink)を作成しました。次の例のツリーがあります。

$ ls -l /tmp/A
total 0
lrwxrwxrwx 1 root root 6 Apr  3 12:27 Blink -> /tmp/B
-rw-r--r-- 1 root root 0 Apr  3 12:27 foo

$ ls -l /tmp/B
total 0
-rw-r--r-- 1 root root 0 Apr  3 12:27 bar

次に、/tmp/Aに移動してディレクトリをBlinkに変更します。

$ cd /tmp/A
$ pwd
/tmp/A
$ cd Blink
$ pwd
/tmp/A/Blink

cd ..返します/tmp/A が、たとえば入力するとls ../fooエラーが発生します。

ls: ../foo: No such file or directory

組み込みのcdコマンドは必要に応じてパスをチェックしますが、外部lsは..を/tmp/Bの上にあるものとして扱うため、fooを見つけることができません。

ここで問題は何ですか?相対パス(例:../foo)を介して/ tmp / A / Blinkからfooファイルをインポートできますか?

ベストアンサー1

シェルは現在の作業ディレクトリをに保存します$PWD。これがシェル組み込みcdおよび用途でありpwd、ご覧のようにシンボリックリンクを一般ディレクトリとして処理します。時には役に立つこともあり、そうでない時もあります。

以下を使用して実際のディレクトリを見つけることができますpwdhelp pwd詳細については入力してください)。

$ pwd
/tmp/A/Blink
$ pwd -L
/tmp/A/Blink
$ pwd -P
/tmp/B

繰り返しますが、cdオプションがあります-P(再び、help cd友達です)。

$ cd /tmp/A/Blink
$ pwd
/tmp/A/Blink
$ cd -P ..
$ pwd -P
/tmp

最後に、「機能」を完全にオフにすることができます。

$ set -P
$ cd /tmp/A/Blink
$ pwd
/tmp/B

おすすめ記事