2014年6月22日日曜日

ディレクトリへのsymlinkをmvの注意点

えー、今日ちょっとびっくりしたので、忘備録として。。。

FreeBSD9.xでの挙動だったので、GPLなcoreutilsベースなものだったりすると違うかも知れませんが。

 前提: 以下のようにディレクトリへのsymlinkがあった。

/foo/bar -> /baz/bababa/

カレントワーキングディレクトリを以下 /foo とします。

ここで、barをbar.bakにmvしたいと思ったが、ちょっとサボってtcshのファイル名コンプリーションに頼ってしまい、

mv bar/ bar.bak

を実行して、ls とすると、なんと bar.bak の他に bar も残っている。。。。
なんと、

/baz/bababa というディレクトリを /foo/bar.bak にmvしたという。。。
いや、そういう振る舞いをするソースコードが思わず頭に浮かびましたけど:-)、ちょっとご無体な、、という気分。
で、/foo/bar は存在しない /baz/bababa を指しているという。。。

慌てて元に戻しましたけどね。

0 件のコメント:

コメントを投稿