( ... ) 是此代码中的子外壳还是其他?

Is ( ... ) a subshell in this code or something else?

在我的这个 POSIX shell 函数中:

disable_mouse_for_a_second()
{
    if xinput --disable "" 2> /dev/null
    then
        (
            sleep 1s
            xinput --enable ""
        ) &
        return 0
    else
        return 1
    fi
}

( ... ) 是此代码中的子shell 还是其他?

您问题的简短回答是。问题块的原因无非是单行:

( sleep 1s; xinput --enable ""; ) &

分布在多行。它只是执行(和后台)sleepxinput 命令。

您将看到的两个主要的复合命令 写在多行上:

(list)        ## and 
{ list; }

两者的区别是(list)是在subshell环境中执行的,变量赋值和影响[=34=的内置命令]的环境在命令完成后不再有效。

{ list; }列表只是在当前shell环境.

中执行