我有一个文件夹组织,如下所示:
link.sh
dist/MyApp-3.0.0/script.sh
dist/MyApp-3.0.0/lib/*.jarlink.sh是指向KornShell (ksh)脚本script.sh的符号链接。在shell脚本中,我想使用以下命令调用Java程序:
java -cp lib/*当我尝试从符号链接启动应用程序时,我得到ClassNotFound,因为相对路径是从链接基础目录解析出来的(这是正常的)。
在shell脚本中,如何获取脚本的完整路径(<...>/dist/MyApp-3.0.0/)?它将允许我修改我的Java调用:
java -cp ${SCRIPT_DIR}/lib/*发布于 2012-01-25 20:01:30
编辑:使用readlink
您可以使用readlink,它可以归结为:
SCRIPT_DIR=$(dirname "$(readlink -f $0)")编辑:不使用readlink
if test -h $0; then
symdir=$(dirname "$(ls -l $0 | sed -n 's/.*-> //p')")
if [[ -z $symdir ]]; then
symdir=.
fi
fullreldir=$(dirname $0)/$symdir
fi
script_dir=$(cd $fullreldir; /bin/pwd)我误解了脚本的位置,并假设被调用的脚本的目录位于目标应用程序的目录结构中,其中可以使用以下内容:
SCRIPT_DIR=$(cd $(dirname $0); /bin/pwd)发布于 2012-01-25 20:56:53
您必须使用readlink函数(man readlink)
my2c
https://stackoverflow.com/questions/9002220
复制相似问题