使用环境变量打开 xtrace

使用环境变量打开 xtrace

Bash 有一个有时有用的功能,如果您打开“ -x”选项(我相信符号名称是xtrace),Bash 会在执行脚本时输出每一行脚本。

我知道有两种方法可以实现这种行为:

  • 在脚本本身中,说set -x
  • 在命令行上,将-x选项传递给 Bash。

有什么方法可以通过环境变量打开此选项吗?

(特别是,我自己没有调用 Bash,所以我无法向它传递任何选项,并且感兴趣的脚本位于压缩存档内,我真的不想重建它。如果我可以设置一个环境变量,它可能会被所有子进程继承......)

  • 联机帮助页说了一些关于 的内容BASHOPTS,但是当我尝试时,Bash 说这是只读的。 (感谢您没有在联机帮助页中提及这一点。)

  • 同样,SHELLOPTS似乎也是只读的。

  • 您可以选择哪个FD与 一起使用BASH_XTRACEFD。但我仍然需要首先打开跟踪。

答案1

用于env忽略readonly标志。

env SHELLOPTS=xtrace ./yourscript

或者,如果您的父 shell 中有set -x,您可以export SHELLOPTS,则可以将其复制到环境中,从而复制到子 shell 中(感谢乔·卡萨东特为了这):

set -x           # set xtrace flag
export SHELLOPTS # copy all options, including xtrace flag, to environment
./yourscript

相关内容