【问题标题】:How to get sourcing script (BASH_ENV, $0)?如何获取采购脚本 (BASH_ENV, $0)?
【发布时间】:2022-08-19 18:06:05
【问题描述】:

案子

根据gnu.orgBASH_ENV 对非交互式脚本的行为如下:

if [ -n \"$BASH_ENV\" ]; then . \"$BASH_ENV\"; fi

来源脚本可能通过$0 获得其来源部分(我知道这有点骇人听闻)。

foo:

echo foo
. bar.sh

bar.sh:

#!/bin/bash
echo bar
echo \\$0: $0
user@myhost:~/test$ ./foo
foo
bar
$0: ./foo

但是当使用 BASH_ENV 时,引用脚本中的 $0 将具有执行命令的名称,而不是源脚本的名称 ./foo

.bashenv:

echo \"Started script $0\"
user@myhost:~/test2$ BASH_ENV=.bashenv ./foo
Started script /bin/bash

问题

出于调试目的,我想为作为一个主根脚本的一部分调用的每个脚本记录输出\"Started script xy\"

目标是不在每个脚本(DRY)中手动记录名称。 BASH_ENV 可能是这里的解决方案。但是如何在脚本中获取源脚本的名称?还是有更好的解决方案?

    标签: bash debugging environment-variables dry


    【解决方案1】:

    你有没有尝试过 ?

    echo "Started script $_"
    

    【讨论】:

      猜你喜欢
      • 2011-05-19
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      相关资源
      最近更新 更多