Portál AbcLinuxu, 6. května 2025 07:18
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 .
Tiskni
Sdílej:
cd -P ..Bash se defaultně snaží před uživatelem existenci symlinků utajit. Dřív fungovalo
cd ./..ale teď už to asi nejde (bash-3.0).
djaara@djaara ~ $ pwd /home/djaara djaara@djaara ~ $ cd ./.. djaara@djaara /home $ pwd /home djaara@djaara /home $ bash --version GNU bash, version 3.00.16(1)-release (i686-pc-linux-gnu) Copyright (C) 2004 Free Software Foundation, Inc. djaara@djaara /home $
cd ./..
už skutečně ignoruje fyzickou strukturu adresářů.
Z'LI0(%:`&/NRU`Y0"@8.L%.%PG(%!D>"<!@C(4&'?`UO!/$"K\2)+!1K',R'
2V,*3$D-EG4PC!<*(%%I"<*$`
`
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.