ls .. 無法與符號連結正常運作

ls .. 無法與符號連結正常運作

我的目錄設定有點像這樣

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

最後一個是符號連結。

如果我這樣做

cd ~/code/build
ls ..

然後我得到 的列表/path/to/somewhere,但是來自其他備註和我自己的經驗,我希望看到清單~/code- 我發誓這曾經是相反的。

我在 Ubuntu 上使用 zsh 和 bash。是否有這樣的設定或它是否深深地融入到 POSIX 之類的東西中?

答案1

不是 的問題ls。這就是符號連結的工作原理。它..讓您進入當前目錄的父目錄,該目錄不知道您透過符號連結到達它。 shell 必須介入以防止這種行為。對於 shell 內建命令cd,有特殊的處理,它不僅會調用chdir,還會記住完整的目錄路徑並嘗試找出您想要的內容。ls但是,它不是內建的。如果你想得到你所期望的結果,shell 必須..在傳遞它之前更改為不同的路徑。選項可以幫助您。lszshCHASE_DOTS

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

答案2

既然你用我的標籤標記了你的問題,zsh我假設我們正在談論這個外殼。

您很可能已經設定了(直接或間接使用某些外部腳本,例如oh-my-zsh)變數CHASE_LINKS和/或CHASE_DOTS。若要確認運行setopt | grep -i chase並查看它們是否已列出。如果是,只需取消設定即可:

unsetopt CHASE_DOTS
unsetopt CHASE_LINKS

相關內容