Bash

ls、mv 的符號連結:強制函式使用“邏輯”地址(記住原始路徑)

  • October 1, 2012

似乎對於在符號連結上執行的許多基本功能,預設使用物理路徑。但是, 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 實現的,因此無法知道您遍歷了符號連結以到達目前目錄。由於這些命令(lsmvrm等)無法了解符號連結,因此它們無法維持這種錯覺。

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