Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在shell脚本中解析指向父目录的符号链接?_Shell_Proguard_Symlink_Dirname - Fatal编程技术网

如何在shell脚本中解析指向父目录的符号链接?

如何在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 如何重写环境变量的分配

下一行介绍了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

如何重写环境变量的分配,使其解析符号链接(如果存在)?
我知道在上有一个非常类似的问题,但仍然无法找出如何将这些解决方案与父文件夹方法结合在一起。

我认为一个
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"