UNIXライクなシステムでパス解決のプロセス(manページpath_resolutionを参照)をエミュレートしようとしています。
私のOSはLinuxで、GNU coreutils 8.7を使用しています。
解決における余分な末尾の「/」の意味を明確にするために、シェルで次のことを行いました。
mkdir this_is_dir
ln -s this_is_dir this_is_link
rm this_is_link
this_is_linkはシンボリックリンクであるため、すべて正常で、削除しました。しかし、試みている間:
mkdir this_is_dir
ln -s this_is_dir this_is_link
rm this_is_link/
反響した rm: cannot remove 'this_is_link/': Is a directory
さて、末尾の「/」はシンボリックリンクのフォローを引き起こしたと私は思いました。だから、私は別のコマンドを試しました:rmdir this_is_link/
そして面白い結果が出ました: rmdir: failed to remove 'this_is_link/': Not a directory
私が期待したものではありません。だから私は私の友人に彼のシステムで同じ結果が得られるかどうか確認するように頼んだ。彼は私よりも低いバージョンのcoreutilsを持っていました。結果は驚くべきものでしたrm
rmdir 'this_is_link/'
Not a directory
。同じエラーが発生するかどうかは関係ありません。
そして、別の友人が彼のMac OSで試したところ、結果は次のようになります。rm
=> 'Is a directory'、rmdir
=>ディレクトリは正常に削除され、リンクは残りました。
パス解決の正確な動作に関する仕様はありますか?