0
点赞
收藏
分享

微信扫一扫

在shell 脚本中获取该脚本的所在目录

思考的鸿毛 2022-01-13 阅读 81

场景应该是这样的:

使用dirname{BASH_SOURCE[0]}

dirname:获取指定路径的目录部分。

(base) ➜  Downloads dirname /Users/mac/Downloads/demo.sh
/Users/mac/Downloads

{BASH_SOURCE[0]} 会拿到该脚本执行是使用的 path。

#!/bin/bash

echo  ${BASH_SOURCE[0]}
echo $0
(base) ➜  Downloads sh /Users/mac/Downloads/demo.sh
/Users/mac/Downloads/demo.sh
/Users/mac/Downloads/demo.sh

那怎么在脚本执行时,在里面获取到脚本所在的目录?

思路:

  1. 获取到脚本文件的路径。
  2. 获取到脚本文件所在的目录。
  3. cd 进入,再 pwd。

最终的命令:

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

测试:

#!/bin/bash
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $DIR

结果:

(base) ➜  Downloads sh demo.sh
/Users/mac/Downloads
举报

相关推荐

0 条评论