Shell
進入通過連結連結的目錄
當我
cd
連結時,我的目前路徑以連結的路徑為前綴,而不是連結連結到的目錄的路徑。例如~/dirlinks/maths$ ls -l logic lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic ~/dirlinks/maths$ cd logic ~/dirlinks/maths/logic$ pwd /home/tim/dirlinks/maths/logic ~/dirlinks/maths/logic$ cd .. ~/dirlinks/maths$
我想將目前路徑更改為連結目錄的路徑,以便我也可以使用連結目錄的父目錄。除了
ls
找到連結目錄的連結,然後cd
進入它,還有什麼更簡單的方法可以做到這一點?例如,cd
進入連結後,如何將目前路徑更改為連結目錄的路徑?
使用 POSIX shell,您可以使用cd內置
-P
選項:cd -P <link>
與
bash
, 從man bash
:-P 選項表示使用物理目錄結構而不是遵循符號連結(另請參見 set 內置命令的 -P 選項)
類似 Korn 的 shell 跟踪目前目錄路徑中的符號連結(這稱為邏輯目前目錄跟踪)。如果要展開所有符號連結,請將選項傳遞
-P
給cd
內置函式(用於物理目前目錄跟踪):cd -P logic
如果您位於通過符號連結訪問的目錄中,並且想要將跟踪的目前目錄切換到擴展符號連結的路徑,請執行
cd -P .
如果要列印目前目錄的路徑並展開符號連結,請執行
pwd -P
. 在 bash 中,如果要關閉邏輯跟踪,請執行set -P
; 在 zsh 中,執行set -w
或setopt chase_links
.