【Shell】$(cd `dirname $0`;pwd)与直接使用pwd的区别
本文讲述了$(cd `dirname $0`;pwd)的释义与用法,以及$(cd `dirname $0`;pwd)与直接使用pwd的区别
·
1. $(cd `dirname $0`;pwd)与直接使用pwd的区别
区别如下:
# 显示当前敲这个命令所在的目录,以绝对路径显示。
pwd
# 显示执行的脚本所在的目录,以绝对路径显示.
$(cd `dirname $0`;pwd)
例:编写tset.sh
,脚本所在路径如下E:/Code/Shell/test.sh
# tset.sh
cur_dir=`pwd`
echo ${cur_dir}
current_dir=$(cd `dirname $0`;pwd)
echo ${current_dir}
分别在E:/Code
和E:/Code/Shell
各执行一次test.sh
,得到的结果如下:
2. $(cd `dirname $0`;pwd)的释义
- dirname $0:显示执行脚本所在的目录
- dirname是获取文件或者文件夹所在的目录
- $0为脚本名
- cd `dirname $0`:进入到执行脚本所在的目录
- ` ` 与
$()
都表示命令替换,即` `与$()
里的内容是一条命令
- ` ` 与
- pwd:显示当前工作目录(cd执行后的)
$(cd `dirname $0`;pwd)
3. $(cd `dirname $0`;pwd)的用法
因为pwd
显示的是当前敲这个命令所在的目录,所以将pwd
命令放在shell脚本中会留下坑。
如果想要获取执行脚本所在的目录,而不在执行脚本所在的目录敲pwd
命令,得到的就不是想要的结果,所以shell脚本中都使用$(cd `dirname $0`;pwd)来获取脚本所在的目录,确保无误。
例:编写tset.sh
,脚本所在路径如下E:/Code/Shell/test.sh
# tset.sh
# 脚本所在目录
current_dir=$(cd `dirname $0`;pwd)
echo ${current_dir}
# 脚本所在目录的上级目录
parent_dir=$(cd $(dirname ${current_dir});pwd)
echo ${parent_dir}
分别在E:/Code
和E:/Code/Shell
各执行一次test.sh
,得到的结果如下:
更多推荐
已为社区贡献7条内容
所有评论(0)