当用户不直接执行文件,而是通过软链接执行文件时,如何find正在执行的原始文件的完整path。 更准确地说,假设我有/original/path/a.sh
,并且在这里指向该文件的一个软链接: ~/Desktop/link-to-a.sh
。 如果用户实际执行~/Desktop/link-to-a.sh
如何在~/Desktop/link-to-a.sh
find"/original/path/"
?
下面的variables保存〜/桌面/这是没有用的。
DIR="$( cd "$( dirname "$0" )" && pwd )"
使用readlink
。
要获得包含脚本的软链接目录的真实路径,请执行以下操作:
DIR=`dirname $0` DIR=`readlink -f $DIR`
如果您的软链接直接指向脚本,而不是其目录,请执行以获取脚本所在的实际目录:
FILE=`readlink -f $0` DIR=`dirname $FILE`