Linux bash:通过软链接执行时find目标文件的完整path

当用户不直接执行文件,而是通过软链接执行文件时,如何find正在执行的原始文件的完整path。 更准确地说,假设我有/original/path/a.sh ,并且在这里指向该文件的一个软链接: ~/Desktop/link-to-a.sh 。 如果用户实际执行~/Desktop/link-to-a.sh如何在~/Desktop/link-to-a.shfind"/original/path/"

下面的variables保存〜/桌面/这是没有用的。

 DIR="$( cd "$( dirname "$0" )" && pwd )" 

使用readlink

要获得包含脚本的软链接目录的真实路径,请执行以下操作:

 DIR=`dirname $0` DIR=`readlink -f $DIR` 

如果您的软链接直接指向脚本,而不是其目录,请执行以获取脚本所在的实际目录:

 FILE=`readlink -f $0` DIR=`dirname $FILE`