使用环境变量打开 xtrace

Mat*_*hid 17 bash environment-variables trace

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

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

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

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

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

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

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

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

Cha*_*ffy 18

用于env忽略readonly标志。

env SHELLOPTS=xtrace ./yourscript
Run Code Online (Sandbox Code Playgroud)

或者,如果您set -x的父 shell 中有,则可以export SHELLOPTS将其复制到环境中,从而复制到子 shell 中(感谢Joe Casadonte):

set -x           # set xtrace flag
export SHELLOPTS # copy all options, including xtrace flag, to environment
./yourscript
Run Code Online (Sandbox Code Playgroud)