下面的行在一个PROGUARD_HOME中引入局部变量shell脚本
PROGUARD_HOME=`dirname "$0"`/..这指向shell脚本的父文件夹。脚本正常执行。然后,我创建了符号链接/usr/local/bin/proguard,它指的是~/bin/proguard4.10/bin/proguard.sh。当我使用符号链接运行过程时,PROGUARD_HOME不再被正确解析。这将导致shell脚本输出以下错误消息:
错误:无法访问jarfile /usr/local/bin/./lib/pro危d.jar
如何重写环境变量的分配,以便在存在的情况下解析符号链接?我知道在解析shell脚本中的符号链接上有一个非常类似的问题,但仍然不知道如何将这些解决方案与这里的父文件夹方法结合起来。
发布于 2013-11-04 15:08:56
我认为显示shell脚本本身的目标的readlink -f $0,然后去掉脚本的dirname,以及产品上的另一个readlink -f应该可以做到这一点:
PROGUARD_HOME=$(readlink -f $(dirname $(readlink -f "$0"))/..)一步一步地分解:
echo "\$0 is $0"
TRUENAMEOFSCRIPT=$(readlink -f $0)
echo "readlink -f of \$0 reveals $TRUENAMEOFSCRIPT"
DIRNAMEOFSCRIPT=$(dirname $TRUENAMEOFSCRIPT)
echo "The script lives in directory $DIRNAMEOFSCRIPT"
PARENTDIR=$(readlink -f "$DIRNAMEOFSCRIPT"/..)
echo "Its parent dir is $PARENTDIR"https://stackoverflow.com/questions/19770176
复制相似问题