Используя приведенную ниже команду, я могу регистрировать все действия, произошедшие внутри этого скрипта.
bash -x script.sh
К сожалению, этот сценарий вызывает другой сценарий, в котором нет -x
тогда настройка активна, т.е. настройка не наследуется дочерними скриптами.
Итак, есть ли способ активировать set -x
для всех последующих скриптов?
Если вы не писали дочерние скрипты и не контролируете их содержимое, возможно, здесь не будет способа сделать то, что вы хотите. Вы получаете представление о скриптах, которые вызываете напрямую, вызывая их с помощью bash -x <scriptname>
вместо того, чтобы полагаться на их исполняемый бит.
Если у вас есть контроль над контентом, рассмотрите возможность использования переменной среды, чтобы указать, когда вам нужно дополнительное отслеживание, и сделайте что-то вроде этого:
В вашем окружении или .bashrc
export MYAPP_LOGGING="on"
Затем в верхней части скрипта добавьте что-то вроде:
test "$MYAPP_LOGGING" && set -x
Тогда любое ненулевое значение для MYAPP_LOGGING включит отслеживание. unset MYAPP_LOGGING
выключит его.
Также стоит отметить: вы можете отключить ведение журнала с помощью set +x
, так что это даст вам возможность отслеживать только части ваших скриптов.