我有一些脚本,它使用周围目录中的文件。它使用
dirname $0
命令。 它应该在我运行此脚本的任何目录中工作,但是当我运行指向该脚本的符号链接时,我得到了符号链接的路径。所以我得到dirname的输出而不是脚本本身的路径。
任何人都知道如何获取脚本运行的路径?
答案 0 :(得分:4)
获取脚本的真实路径
if [ -L $0 ] ; then
ME=$(readlink $0)
else
ME=$0
fi
DIR=$(dirname $ME)
答案 1 :(得分:0)
如果您安装了realpath
:
$(dirname $(realpath $0))
答案 2 :(得分:0)
除非我误解你,否则问题应与以下问题相同:How do you normalize a file path in Bash?
未提及的选项有以下python单行:
python2.6 -c "import os,sys; print os.path.realpath(sys.argv[1])" "$0"
最后,请记住在“$ 0”附近使用双引号。
答案 3 :(得分:0)
更简单的解决方案:
dirname $(readlink -f $0)
在Ubuntu 14.04上测试过:
which java
返回/usr/bin/java
,这是一个符号链接。
readlink -f `which java`
返回/usr/lib/jvm/java-8-oracle/jre/bin/java
最后,
dirname $(readlink -f `which java`)
返回/usr/lib/jvm/java-8-oracle/jre/bin
,这是“java”所在的文件夹。