Symlink
我可以創建單向符號連結嗎?
我想創建一個單向符號連結,即我可以使用它轉到目標目錄但我無法返回。
假設有一個名為的目錄
D
,其中包含兩個子目錄S1
和S2
. 我想創建一個指向S1
(S2
比方說ls2 -> ../S2/
)的連結。如果我這樣做cd ls2
然後cd ..
我想去D
而不是S1
。是否可以?
所有符號連結都是單向的。就核心而言,進入
/D/S1
並執行後chdir("ls2")
,你就進入了/D/S2
,所以如果你執行chdir("..")
,你最終會進入/D
。如果您在外殼中執行此操作,則在
cd /D/S1 cd ls2 cd ..
你最終在
/D/S1
. 原因是 shell 自己跟踪目前目錄,並且記住符號連結。您不能逐個連結地禁用此 shell 行為,但可以在執行
cd
命令時禁用它。執行後cd ls2
,shell 將目前目錄記住為/D/S1/ls2
:$ pwd /D/S1 $ cd ls2 $ pwd /D/S1/ls2 $ cd .. $ pwd /D/S1
要指示 shell 忘記其符號連結感知的目前目錄跟踪,請將
-P
選項傳遞給cd
. 該pwd
命令還有一個-P
選項。$ pwd /D/S1 $ cd ls2 $ pwd /D/S1/ls2 $ pwd -P /D/S2 $ cd -P .. $ pwd /D
當您更改為符號連結時,您也可以忘記邏輯跟踪:
$ pwd /D/S1 $ cd -P ls2 $ pwd /D/S2 $ cd .. $ pwd /D