Linux 获取执行脚本的目录的名称
我有一些脚本,它使用周围目录中的文件。它使用Linux 获取执行脚本的目录的名称,linux,bash,scripting,Linux,Bash,Scripting,我有一些脚本,它使用周围目录中的文件。它使用 dirname $0 指挥部。 它应该在我运行这个脚本的任何目录下工作,但是当我运行指向那个脚本的符号链接时,我得到了符号链接的路径。所以我得到的是dirname的输出,而不是脚本本身的路径 有人知道获取脚本运行路径的方法吗 获取脚本的真实路径 if [ -L $0 ] ; then ME=$(readlink $0) else ME=$0 fi DIR=$(dirname $ME) 如果已安装realpath: $(dirnam
dirname $0
指挥部。
它应该在我运行这个脚本的任何目录下工作,但是当我运行指向那个脚本的符号链接时,我得到了符号链接的路径。所以我得到的是dirname的输出,而不是脚本本身的路径
有人知道获取脚本运行路径的方法吗 获取脚本的真实路径
if [ -L $0 ] ; then
ME=$(readlink $0)
else
ME=$0
fi
DIR=$(dirname $ME)
如果已安装
realpath
:
$(dirname $(realpath $0))
除非我误解了你的意思,否则问题应该与以下问题相同: 未提及的选项有以下python one liner:
python2.6 -c "import os,sys; print os.path.realpath(sys.argv[1])" "$0"
最后,记住在“$0”周围使用双引号。一个更简单的解决方案:
dirname $(readlink -f $0)
在Ubuntu 14.04上测试:
哪个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”所在的文件夹。可能的重复项也请参见。jmz的答案是我需要的。我有点害怕使用您的建议,因为命令名末尾的Python版本可能会因服务器而异,脚本的可移植性也会降低。哦,这是一个输入错误。python的任何最新版本(从2.2开始)都应该这样做,所以您可以使用“python”来代替。