Symlink

我可以創建單向符號連結嗎?

  • October 16, 2019

我想創建一個單向符號連結,即我可以使用它轉到目標目錄但我無法返回。

假設有一個名為的目錄D,其中包含兩個子目錄S1S2. 我想創建一個指向S1S2比方說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

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