用dirname命令和pwd命令(或读取PWD变量)组合。先进入脚本所在目录,读出PWD值(这就是需要的东西),然后返回原来的位置[可选]。命令如下:
echo $(cd "$(dirname "$0")"; pwd)
这里的cd是在子shell中执行,所以不需要用额外的命令返回原位置了。
你可以在cd之前就保持pwd返回的值就可以了
1 #!/bin/bash
2 path=`pwd`
3 cd ..
4 echo "sript path = $path"
第2行哪个不是单引号,看清楚哦
我来说说:
在Linux中,脚本的执行有3种方式
1.bash jiaoben.sh这种方式是不需要可执行属性的,因为bash是一个命令,而后面的文件名就是它的参数,它在当前Shell中启动一个子Shell来运行脚本程序。
2.“.” jiaoben.sh这种方式是在当前Shell中执行脚本程序,同样“.”是一个命令,文件名是它的参数,不需要可执行属性。
3.直接通过文件名执行脚本程序,这时需要设置可执行属性,./jiaoben.sh就表示在当前目录执行jiaoben.sh
希望能帮助你。。。
BASH SHELL有一个环境变量,专门记录脚本位置的。
$0
$系列还有很多的系统变量。
#!/bin/bash
echo $0
希望能帮助您。
这个肯定是你需要的:
# ==========================Shell路径设置START==========================
# Shell路径获取与变量设置
ShSubPath=$( echo $0 | sed 's/'"$( basename $0 )"'//' )
# 进入脚本存放路径
if [ -n "${ShSubPath}" ]; then
cd "${ShSubPath}"
else
echo "已经在Sh路径了!"
fi
# 获取shell绝对路径
export ShPath="$( pwd )"
# ==========================Shell路径设置 END===========================