Právě se mi podařilo se zamotat ve vlastním chaosu symlinků, tak jsem se vydal trochu zkoumat jejich chování. Proč je pro ls symlink něco jiného než pro cd?
Nejdříve příklad, na kterém si to můžete vyzkoušet:
mkdir dir1 dir2 touch dir1/file_in_1 dir2/file_in_2 ln -s ../dir1 dir2/d1
Tím vznikla takováto struktura:
$ ls -lR .: total 0 drwxr-xr-x 2 michal michal 22 2005-10-25 22:09 dir1 drwxr-xr-x 2 michal michal 31 2005-10-25 22:09 dir2 ./dir1: total 0 -rw-r--r-- 1 michal michal 0 2005-10-25 22:08 file_in_1 ./dir2: total 0 lrwxrwxrwx 1 michal michal 8 2005-10-25 22:09 d1 -> ../dir1/ -rw-r--r-- 1 michal michal 0 2005-10-25 22:08 file_in_2
Proč ale z d2 je .. něco jiného pro cd a pro ls?
dir2/d1$ ls file_in_1 dir2/d1$ ls .. dir1 dir2 dir2/d1$ cd .. dir2$ ls d1 file_in_2
Jak na ten zápis po napsání koukám, tak mi to připadá spíš jako core dump než zápis do blogu :-).