在shell 脚本中获取该脚本的所在目录
场景应该是这样的:命令行获取文件所在路径,怎么办?cd 到文件目录,2 pwd 输出。那么在 .sh 脚本执行时,怎么获取到该脚本的绝对路径呢?使用dirname和{BASH_SOURCE[0]}dirname:获取指定路径的目录部分。(base) ➜Downloads dirname /Users/mac/Downloads/demo.sh/Users/mac/Downloads{BASH_SO
·
场景应该是这样的:
命令行获取文件所在路径,怎么办?
- cd 到文件目录,2 pwd 输出。
那么在 .sh 脚本执行时,怎么获取到该脚本的绝对路径呢?
使用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
那怎么在脚本执行时,在里面获取到脚本所在的目录?
思路:
- 获取到脚本文件的路径。
- 获取到脚本文件所在的目录。
- 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
更多推荐
已为社区贡献5条内容
所有评论(0)