Symlink

如何告訴程序它在符號連結文件夾中?

  • February 24, 2021

如果我有一個符號連結文件夾,例如:

/home/user/foo/foo2 -> /home/user/bar/bar2

我 cd 到/home/user/foo/foo2:.

如果我做 a pwd,它會返回:/home/user/foo/foo2。偉大的!

但如果我那麼ls ../它將返回/home/user/bar.

有沒有辦法讓程序知道它在符號連結文件夾中,所以如果它進入一個目錄,它會跟隨反向連結?

在一般情況下,沒有。你不在 foo2 中。那是一種錯覺。你的外殼保持著幻覺,這就是它可以看到它的原因。但是任何子程序都不知道

我會檢查 $ PWD env variable. See if your shell sets that to the illusion and sub processes can see it. But that’s only going to work in code you control. You know you check $ 殘疾人。其他應用程序會(實際上)呼叫 cwd()。

您可以檢查目前輸出pwd是否是符號連結。您可以使用以下實用程序來做到這一點filestat

user@host:~/tmp$ mkdir -p sym/bar/bar
user@host:~/tmp$ mkdir -p sym/foo
user@host:~/tmp$ cd sym/foo/
user@host:~/tmp/sym/foo$ ln -s ../bar/bar/ ./foo
user@host:~/tmp/sym/foo$ ls -l
total 0
lrwxrwxrwx 1 user user 11 Feb 24 17:33 foo -> ../bar/bar/
user@host:~/tmp/sym/foo$ cd foo
user@host:~/tmp/sym/foo/foo$ pwd
/home/user/tmp/sym/foo/foo
user@host:~/tmp/sym/foo/foo$ file $(pwd)
/home/user/tmp/sym/foo/foo: symbolic link to ../bar/bar/
user@host:~/tmp/sym/foo/foo$ stat -c %F  $(pwd)
symbolic link

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