侧边栏壁纸
  • 累计撰写 26 篇文章
  • 累计创建 25 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

shell获取脚本所在目录,dirname不可用!

iRay
2023-03-07 / 0 评论 / 0 点赞 / 1068 阅读 / 2048 字

前言

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的真实目录

0

评论区