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