首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析到shell脚本中父目录的符号链接?

问如何解析到shell脚本中父目录的符号链接?
EN

Stack Overflow用户
提问于 2013-11-04 14:42:30
回答 1查看 2.2K关注 0票数 0

下面的行在一个PROGUARD_HOME中引入局部变量shell脚本

代码语言:javascript
复制
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脚本中的符号链接上有一个非常类似的问题,但仍然不知道如何将这些解决方案与这里的父文件夹方法结合起来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-04 15:08:56

我认为显示shell脚本本身的目标的readlink -f $0,然后去掉脚本的dirname,以及产品上的另一个readlink -f应该可以做到这一点:

代码语言:javascript
复制
PROGUARD_HOME=$(readlink -f $(dirname $(readlink -f "$0"))/..)

一步一步地分解:

代码语言:javascript
复制
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"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19770176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档