Назад | Перейти на главную страницу

Регистрируйте все действия bash с помощью нескольких скриптов

Используя приведенную ниже команду, я могу регистрировать все действия, произошедшие внутри этого скрипта.

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, так что это даст вам возможность отслеживать только части ваших скриптов.