如何在Mac OS X上的shell脚本中检索绝对文件名?

我想检索当前执行的脚本文件的绝对文件名。 链接也应该解决。

在Linux上,这似乎是这样做的:

$(readlink -mn "$0") 

但是在Mac OS X上, readlink似乎工作得非常不同。

我读过,这是使用

 $(realpath $0) 

在BSD中,但那也行不通。 Mac OS X没有realpath

任何想法?

我欺骗和使用Perl这个事情:

 #!/bin/bash dirname=`perl -e 'use Cwd "abs_path";print abs_path(shift)' $0` echo $dirname 

你会认为我只是用perl写完整个脚本,而且我经常这样做,但并不总是如此。

 #!/usr/bin/env bash scriptDir="$(cd "$(dirname "$0")" && pwd -P)"