No caso de bash
, isso depende se $SHELLOPTS
está no ambiente ou não.
bash-4.4$ export SHELLOPTS
bash-4.4$ set -x
bash-4.4$ bash -c 'echo x'
+ bash -c 'echo x'
+ echo x
x
Veja como o bash -c 'echo x'
herdou a opção xtrace
. Para as opções definidas por shopt
, é o mesmo, mas com a variável $BASHOPTS
.
Ele é útil especialmente para a opção xtrace
para depuração quando você deseja executar um script bash
(ou qualquer comando executando um script bash
) e todos os outros scripts bash
que ele invocar, recursivamente com xtrace
(desde que nada faça set +x
nesses scripts). Se o seu sh
for bash
, isso também os afetará, assim como o system("command line")
feito em outros idiomas:
env SHELLOPTS=xtrace some-command