filepath.EvalSymlinks()を参照してください。
EvalSymlinks は、シンボリック リンクの評価後にパス名を返します。パスが相対パスの場合、コンポーネントの 1 つが絶対シンボリック リンクでない限り、結果は現在のディレクトリに対して相対パスになります。
例
木:
/bin/sh -> bash
/usr/lib/libresolv.so -> ../../lib/libresolv.so.2
os.Readlink()
os.Readlink("/bin/sh") // => bash
os.Readlink("/usr/lib/libresolv.so") //=> ../../lib/libresolv.so.2
ファイルパス.EvalSymlinks()
filepath.EvalSymlinks("/bin/sh") // => /bin/bash
filepath.EvalSymlinks("/usr/lib/libresolv.so") //=> /lib/libresolv-2.20.so
注: 絶対パスではありません ( cd /bin
)
filepath.EvalSymlinks("sh") // => bash
filepath.EvalSymlinks("/bin/sh") // => /bin/bash
そしてもっと何か
filepath.EvalSymlinks("/bin/bash") // => /bin/bash
// but
os.Readlink("/bin/bash") // => error: readlink /bin/bash: invalid argument
遊び場ではないアプリケーションの例