Files

解析符號連結 (pwd)

  • February 3, 2013

假設我執行以下操作:

cd /some/path
ln -s /target/path symbolic_name

如果那麼做:

cd /some/path
cd symbolic_name
pwd

我得到:

/some/path/symblic_name

並不是:

/target/path

有沒有辦法讓外殼“完全解析”符號連結(即更新 CWD 等),就好像我直接完成了一樣:

cd /target/path

?

我需要執行一些似乎對我如何到達目標路徑“了解”或“敏感”的程序,並且我希望他們認為我到達目標路徑就像cd /target/path直接完成一樣。

你的 shell 有一個 builtin pwd,它試圖變得“聰明”。在您對cd符號連結執行操作後,內部會pwd偽造輸出,就好像您移動到真實目錄一樣。

-P將選項傳遞給pwd,即執行pwd -P。該-P選項(用於“物理”)告訴pwd不要進行任何符號連結跟踪並顯示目錄的“真實”路徑。

或者,也應該有一個真正的 binary pwd,它不做(甚至不能做)這種魔法。只需使用該二進制顯式:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
$ mkdir a
$ ln -s a b
$ cd b
$ pwd
/home/michas/b
$ /bin/pwd
/home/michas/a

引用自:https://unix.stackexchange.com/questions/63580