在bash 4.3中通过bash -c foo prefix
调用导出的函数时,错误消息前缀为“ prefix”。但是,对于bash 4.4中的同一命令,错误消息前缀变为“环境”。如何在bash 4.3和4.4中更改以下脚本以产生错误消息前缀“ prefix”?我将支持不涉及if-then-else或case-esac以及等效结构的解决方案。
#!/bin/bash
foo() { eval if; } # generate an error
export -f foo
echo $BASH_VERSION
bash -c foo prefix
脚本输出比较:
bash 4.3:
# /tmp/x
4.3.42(1)-release
prefix: eval: line 1: syntax error: unexpected end of file
bash 4.4:
# /tmp/x
4.4.18(1)-release
environment: eval: line 1: syntax error: unexpected end of file
我也想知道为什么会这样,为什么字符串“ environment”将$ 0替换为bash 4.4中的错误消息前缀?