Bash
ls、mv 的符號連結:強制函式使用“邏輯”地址(記住原始路徑)
似乎對於在符號連結上執行的許多基本功能,預設使用物理路徑。但是, cd 工作正常。進入符號連結時, cd 會記住我來自哪裡,因此它使用符號連結的邏輯地址(參見相關文章的範例:symlinks 和 cd)。
像 ls 這樣的函式只能部分地以這種方式工作。如果我通過點擊標籤列出目錄內容( $ ls ../ {tab}) it will list the contents of the directory where the symbolic link is located but if execute the command ( $ ls ../ {enter}) 目錄內容列表來自物理路徑。有沒有辦法讓 ls、mv、rm 等命令像 cd 一樣執行並記住符號連結的邏輯路徑?
感謝您的任何建議。
正是 shell 提供了一種錯覺,即指向目錄的符號連結是根植於符號連結位置的真實目錄。
cd
必然是 shell 內置的,tab-completion 也是 shell 執行的功能。由於cd
是由 shell 執行的,因此它知道符號連結並可以保持錯覺。大多數 Unix 命令不是由 shell 實現的,因此無法知道您遍歷了符號連結以到達目前目錄。由於這些命令(ls
、mv
、rm
等)無法了解符號連結,因此它們無法維持這種錯覺。