Vinton Huang 單純耗時間 says to Ubuntu 台灣社群
1. Resolve symlink的意思 在ln指令的內部處理,似乎不會去檢查symlink target的有效性(resolve & validate symlink) 例如: [me@ArchLinux-CB project]$ ls -l total 12 drwxr-xr-x 2 me users 4096 Mar 6 23:26 build drwxr-xr-x 2 me users 4096 Mar 6 23:09 src1 drwxr-xr-x 2 me users 4096 Mar 6 23:16 src2 1.1 假設需求是要在build目錄下,新增symlink src1->../src1,一般做法(至少我以前只知道這個方式): [me@ArchLinux-CB project]$ cd build [me@ArchLinux-CB build]$ ln -s ../src1 src1 [me@ArchLinux-CB build]$ ls -l total 0 lrwxrwxrwx 1 me users 7 Mar 6 23:30 src1 -> ../src1 1.2 但其實,不進到build目錄下,一樣能做,以再新增symlink src2->../src2為例: [me@ArchLinux-CB project]$ ls -l total 12 drwxr-xr-x 2 me users 4096 Mar 6 23:30 build drwxr-xr-x 2 me users 4096 Mar 6 23:09 src1 drwxr-xr-x 2 me users 4096 Mar 6 23:16 src2 [me@ArchLinux-CB project]$ ls -l build/ total 0 lrwxrwxrwx 1 me users 7 Mar 6 23:30 src1 -> ../src1 [me@ArchLinux-CB project]$ ln -s ../src2 build/src2 [me@ArchLinux-CB project]$ ls -l build total 0 lrwxrwxrwx 1 me users 7 Mar 6 23:30 src1 -> ../src1 lrwxrwxrwx 1 me users 7 Mar 6 23:33 src2 -> ../src2神奇了,在project目錄下,"ln -s ../src2 build/src2",事實上../src2這個target是不存在的。 1.3 推測,ln指令內部,並不會去做resolve & validate symlink target的動作。