tl; dr readlink -fは0、既存のディレクトリに存在しないファイルに対してrealpathは戻りますが、を返します1。ただし、存在しないファイルのreadlink -eように動作しrealpath、戻り1ます(最後の編集者注を参照)。
readlink -f
$ readlink -f non-existent-file
/home/user/non-existent-file
$ echo $?
0
readlink -e
$ readlink -e non-existent-file
$ echo $?
1
realpath
$ realpath non-existent-file
non-existent-file: No such file or directory
$ echo $?
1
readlink -f 存在しないディレクトリ
readlink -f 動作は、パスのどの部分が存在しないかによって異なります。
$ readlink -f /tmp/non-existent-dir/foo
$ echo $?
1
利用可能
readlinkほとんどのLinuxディストリビューション内にインストールされます。一方、realpath多くの場合、明示的にインストールする必要があります。
要約すれば
の呼び出しを置き換える場合は、realpath ...を使用しますreadlink -e ...。
Ubuntu 16 でreadlink(GNU coreutils)8.21およびrealpathバージョン1.19でテスト済み。
(Ed .: @AnthonyGeogheganは、「これはDebianバージョンのことを指しますrealpathrealpathreadlink -f。GNU バージョンの動作は同じです」)
readlink -fGNUよりずっと前にOpenBSDにいました。NetBSD、FreeBSD、およびOpenBSDのすべてが現在readlink -f(リンクでも言及されています)います。realpathFreeBSDとIRIXには長い間あります(Debianのものより前のものかどうかはわかりません)。HPUXとIRIXにもありますがreadlink、そうではありません-f。realpathDebianのExperimental のパッケージは、coreutils のパッケージになりました(問題が発生するかどうかを確認するための実験として)。dwwwrealpath以上のような行為readlink -eのようなGNU 1ながら、readlink -fそう、それは完全なDROPINではありませんが、交換してください