前言
shell脚本调用,往往需要获取当前目录,来调用其他脚本或者文件。
说明
介绍几个命令
dirname :顾名思义目录名称,命令为显示当前文件的目录,有点去掉路径中最后一个目录或文件的意思
dirname /usr/bin/bash
结果为:/usr/bin
如果命令是 dirname /usr/bin
结果为:/usr
basename :与dirname相反,只保留最后一个目录名称或者文件
basename /usr/bin/bash
结果为:bash
如果命令是 basename /usr/bin
结果为:bin
shell脚本内执行命令
$()与`` 作用一样,用于shell命令的执行
pwd :为输出当前目录
第一种方式(开发中不建议使用)
CURRENT_DIR=$(cd $(dirname $0); pwd)
或
CURRENT_DIR=$(cd `dirname $0`; pwd)
第二种方式
CURRENT_DIR=$(cd "$( dirname ${BASH_SOURCE[0]})"; pwd)
或
CURRENT_DIR=$(cd `dirname ${BASH_SOURCE[0]}`; pwd)
总结
第一种方式不建议使用的原因是:
如果脚本A通过source调用了另一个目录的脚本B,这时脚本B里使用了第一种方式获取目录,结果为脚本A的目录,不是脚本B的真实目录
评论区