シナリオ: ディレクトリが存在するかどうかを確認するシェル スクリプトを作成しています。存在し、それがシンボリックリンクである場合、ディレクトリ名に.bak追加してディレクトリの名前を変更します。ただし、シンボリックリンクされたディレクトリ (ディレクトリ A) を別のシンボリックリンクされたディレクトリ (B) に移動すると、B が上書きされるのではなく、A が B内に移動されることに気付きました。
説明する:
$ mkdir foo                                                                     
$ mkdir bar                                                                     
$ ln -s "$PWD/foo" ~/.baz                                                       
$ ls -al ~/.baz                                                                 
lrwxr-xr-x  1 ysim  staff  15 Sep 11 21:45 /Users/ysim/.baz -> /Users/ysim/foo  
$ mv ~/.baz ~/.bam                                                              
$ ls -al ~/.bam                                                                 
lrwxr-xr-x  1 ysim  staff  15 Sep 11 21:45 /Users/ysim/.bam -> /Users/ysim/foo  
$ ls -al ~/.baz                                                                 
ls: /Users/ysim/.baz: No such file or directory                                                                                                   
$ ln -s "$PWD/bar" ~/.baz                                                       
$ ls -al ~/.baz                                                                 
lrwxr-xr-x  1 ysim  staff  15 Sep 11 21:47 /Users/ysim/.baz -> /Users/ysim/bar  
$ ls -al ~/.bam                                                                 
lrwxr-xr-x  1 ysim  staff  15 Sep 11 21:45 /Users/ysim/.bam -> /Users/ysim/foo  
今、名前を変更/移動~/.bazすると~/.bam:
$ mv ~/.baz ~/.bam                 
~/.baz( ) のターゲット/Users/ysim/barは、期待どおりに のターゲットに移動しません~/.bam:
$ ls -al ~/.bam                                                                 
lrwxr-xr-x  1 ysim  staff  15 Sep 11 21:45 /Users/ysim/.bam -> /Users/ysim/foo 
代わりに、~/.bazシンボリック リンク全体がディレクトリ内に移動されました。~/.bam
$ ls -al ~/.bam/
total 8
drwxr-xr-x   3 ysim  staff   102 Sep 11 21:47 .
drwxr-xr-x+ 96 ysim  staff  3264 Sep 11 21:51 ..
lrwxr-xr-x   1 ysim  staff    15 Sep 11 21:47 .baz -> /Users/ysim/bar
何故ですか?~/.bazのターゲットをのターゲットに書き込んで、宛先が~/.bamになるようにするにはどうすればよいでしょうか。~/.bam/Users/ysim/bar