$BASH_SOURCE

转自:http://www.708luo.com/?p=24

今天遇到一个需求,获取当前执行脚本。
如果是sh test.sh或者./test.sh的运行方式,那么很简单,直接使用$0就可以了。 
那么如果是source test.sh或者. ./test.sh的方式运行呢?$0就变成了”-bash”了。
google了一下,这个时候就需要使用$BASH_SOURCE了。(bash版本>=3.0)

?
1
2
3
4
5
6
7
8
9
<font size= "2" >[u1@localhost test ]$ sh test .sh
test .sh
test .sh
[u1@localhost test ]$ source test .sh
- bash
test .sh
[u1@localhost test ]$ cat test .sh
echo $0
echo $BASH_SOURCE< /font >

另外在测试source运行脚本时,有些误操作,导致在执行命令时,都会首先输出一下当前运行命令。

如下所示:

?
1
2
3
4
5
<font size= "2" >[u1@localhost performance]$ cd tools/
cd tools/
[u1@localhost tools]$ cd ..
cd ..
[u1@localhost performance]$< /font >

看起来实在是有点多余,作为一个有轻微洁癖的人,当然想办法要消除它。不过一时竟不知如何下手,而且这个现象也不好描述,就算想google也不行呀。

不过我看到另外打开的一个section是没有这个问题的,因此想到对比两个section的env。

一对比还真发现有些不同,SHLVL这个变量正常的section为1,会首先输出执行命令的section为3。

所以怀疑到是在section运行了bash的原因,在会首先输出执行命令section里面连续输入两次exit之后,现象消失了。

再次在该section里面输入bash,并没有重现之前的现象。

运行bash –help看了一下,怀疑是bash –v/—verbose的原因。再次尝试输入bash -v,现象重现。

前后花了不少时间,藉此记录一下~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值