シンボリックリンクを介してcdすると、pwdが実際のパスではなくシンボリックリンクを表示するのはなぜですか?

シンボリックリンクを介してcdすると、pwdが実際のパスではなくシンボリックリンクを表示するのはなぜですか?

ln -s 1 2ディレクトリ内のディレクトリを指すソフトリンク()を作成し、test()を使用してソフトリンクを開き、cd 2現在のパスを表示しましたpwd。表示されたパスは~/test/2、ではありません~/test/1

ショートカットを使用すると、物理ディレクトリに移動するWindowsなどのオペレーティングシステムではそうではありません。このソフトリンクがLinuxでどのように機能するかは少し混乱しています。これは、のようなショートカットではありませんかWindows?なぜパスではないのですか~/test/1

 $ mkdir test
 $ cd test
 $ mkdir 1
 $ ln -s 1 2
 $ cd 2
 $ pwd
 /home/dazz/test/2

ベストアンサー1

これは、現在の場所にどのように到達したかを覚えるシェルの機能です。
すでにrealpathインストールされている場合は、次のことができます。

$ realpath 
/home/dazz/test/1

Pythonがある場合はありません。

$ python -c "import os; print(os.path.realpath('.'))"
/home/dazz/test/1

またはreadlink(coreutilsから):

$ readlink -f .
/home/dazz/test/1

または/bin/pwd(シェル組み込みではありませんpwd):

$ /bin/pwd
/home/dazz/test/1

おすすめ記事