导出BASH_XTRACEFD对子进程没有影响,它失去了它的特殊含义

我刚刚注意到,导出它会将它转换为普通变量,在子壳中没有特殊含义.这是bash的安全功能吗? 最佳答案 这是检查功能的片段:

#! /bin/bash

exec 3>| trace.txt

BASH_XTRACEFD=3
set -x

# Something to trace
i=1 ; test "$i" -gt 2

# Now in a subshell
(i=2 ; test "$i" -gt 2)

# Let's export it
export BASH_XTRACEFD

# Again check trace
i=3 ; test "$i" -gt 2

# Now in a subshell
(i=4 ; test "$i" -gt 2)

这是trace.txt:

+ i=1
+ test 1 -gt 2
+ i=2
+ test 2 -gt 2
+ export BASH_XTRACEFD
+ i=3
+ test 3 -gt 2
+ i=4
+ test 4 -gt 2

有用!可能是我们有不同的bash版本.我的是4.3.11(1)-release(x86_64-pc-linux-gnu).你的是啥呢?

点赞