linux获取当前执行脚本

原文链接

今天遇到一个需求,获取当前执行脚本。

如果是sh test.sh或者./test.sh的运行方式,那么很简单,直接使用$0就可以了。

那么如果是source test.sh或者. ./test.sh的方式运行呢?$0就变成了”-bash”了。

google了一下,这个时候就需要使用$BASH_SOURCE了。(bash版本>=3.0)
[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

 

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

如下所示:

[u1@localhost performance]$ cd tools/
cd tools/
[u1@localhost tools]$ cd ..
cd ..
[u1@localhost performance]$

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/wujianlundao/archive/2012/06/01/2530491.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值