如何在shell脚本中解析指向父目录的符号链接?
下一行介绍了a中的局部变量如何在shell脚本中解析指向父目录的符号链接?,shell,proguard,symlink,dirname,Shell,Proguard,Symlink,Dirname,下一行介绍了a中的局部变量PROGUARD\u HOME: 这指向shell脚本的父文件夹。脚本正常执行。-然后,我创建了符号链接/usr/local/bin/proguard,它引用~/bin/proguard 4.10/bin/proguard.sh。当我使用符号链接运行proguard时,proguard\u HOME不再正确解析。这会导致shell脚本输出以下错误消息: 错误:无法访问jarfile/usr/local/bin/./lib/proguard.jar 如何重写环境变量的分配
PROGUARD\u HOME
:
这指向shell脚本的父文件夹。脚本正常执行。-然后,我创建了符号链接/usr/local/bin/proguard
,它引用~/bin/proguard 4.10/bin/proguard.sh
。当我使用符号链接运行proguard时,proguard\u HOME
不再正确解析。这会导致shell脚本输出以下错误消息:
错误:无法访问jarfile/usr/local/bin/./lib/proguard.jar
如何重写环境变量的分配,使其解析符号链接(如果存在)?
我知道在上有一个非常类似的问题,但仍然无法找出如何将这些解决方案与父文件夹方法结合在一起。我认为一个
readlink-f$0
可以显示shell脚本本身的目标,然后一个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"
实际打印错误的内容:无法…?可能重复
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"