当在写脚本时,我想在脚本里面知道该脚本的路径,怎么做。可能有人会说pwd命令,但是当在pwd命令之前用了cd 命令到其他目录,pwd就不管用了,
例如:
如果脚本在a/b/a.sh
cd ../
pwd
那么pwd就是a目录了
而且如果把该脚本改成可执行属性,双击时pwd也是不正确的。
用dirname命令和pwd命令(或读取PWD变量)组合。先进入脚本所在目录,读出PWD值(这就是需要的东西),然后返回原来的位置[可选]。命令如下:
echo $(cd "$(dirname "$0")"; pwd)
这里的cd是在子shell中执行,所以不需要用额外的命令返回原位置了。
echo $(cd "$(dirname "$0")"; pwd)
这里的cd是在子shell中执行,所以不需要用额外的命令返回原位置了。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-02-25
你可以在cd之前就保持pwd返回的值就可以了
1 #!/bin/bash
2 path=`pwd`
3 cd ..
4 echo "sript path = $path"
第2行哪个不是单引号,看清楚哦本回答被提问者采纳
1 #!/bin/bash
2 path=`pwd`
3 cd ..
4 echo "sript path = $path"
第2行哪个不是单引号,看清楚哦本回答被提问者采纳
第2个回答 2011-02-19
我来说说:
在Linux中,脚本的执行有3种方式
1.bash jiaoben.sh这种方式是不需要可执行属性的,因为bash是一个命令,而后面的文件名就是它的参数,它在当前Shell中启动一个子Shell来运行脚本程序。
2.“.” jiaoben.sh这种方式是在当前Shell中执行脚本程序,同样“.”是一个命令,文件名是它的参数,不需要可执行属性。
3.直接通过文件名执行脚本程序,这时需要设置可执行属性,./jiaoben.sh就表示在当前目录执行jiaoben.sh
希望能帮助你。。。
在Linux中,脚本的执行有3种方式
1.bash jiaoben.sh这种方式是不需要可执行属性的,因为bash是一个命令,而后面的文件名就是它的参数,它在当前Shell中启动一个子Shell来运行脚本程序。
2.“.” jiaoben.sh这种方式是在当前Shell中执行脚本程序,同样“.”是一个命令,文件名是它的参数,不需要可执行属性。
3.直接通过文件名执行脚本程序,这时需要设置可执行属性,./jiaoben.sh就表示在当前目录执行jiaoben.sh
希望能帮助你。。。
第3个回答 2011-02-19
BASH SHELL有一个环境变量,专门记录脚本位置的。
$0
$系列还有很多的系统变量。
#!/bin/bash
echo $0
希望能帮助您。
$0
$系列还有很多的系统变量。
#!/bin/bash
echo $0
希望能帮助您。
第4个回答 2012-10-16
这个肯定是你需要的:
# ==========================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===========================
# ==========================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===========================