Symlink
如何告訴程序它在符號連結文件夾中?
如果我有一個符號連結文件夾,例如:
/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
是否是符號連結。您可以使用以下實用程序來做到這一點file
或stat
: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