Bash

ls .. 不適用於符號連結

  • January 25, 2015

我的目錄設置有點像這樣

~/code
~/code/src
~/code/build -> /path/to/somewhere/else

最後一個是符號連結。

如果我這樣做

cd ~/code/build
ls ..

然後我得到了 的列表/path/to/somewhere,但是根據其他評論和我自己的經驗,我希望看到列表~/code- 我發誓這曾經反過來工作。

我在 Ubuntu 上使用 zsh 和 bash。是否有此設置,或者它是否已深深根植於 POSIX 或其他東西中?

不是 的問題ls。這就是符號連結的工作方式。使..您進入目前目錄的父目錄,該目錄不知道您是通過符號連結訪問它的。外殼必須進行干預以防止這種行為。對於 shell builtin cd,有一種特殊的處理方式,它不僅會呼叫chdir而且會記住完整的目錄路徑並試圖找出你想要的東西。ls但是,它不是內置的。如果你想得到你所期望的,shell 必須..在傳遞它之前更改為不同的路徑。選項可以幫助您。ls``zsh``CHASE_DOTS

一般來說,目錄的符號連結是一項骯髒的業務。對於關鍵和半永久性應用程序,請使用mount --bind.

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