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

场景应该是这样的:

命令行获取文件所在路径,怎么办?

  1. 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

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

思路:

  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值