【发布时间】:2022-08-19 18:06:05
【问题描述】:
案子
根据gnu.org,BASH_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