Как установить -x для скриптов, отличных от моих собственных

Как установить -x для скриптов, отличных от моих собственных

Я все еще борюсь с ошибкой изДругой вопроскоторый остался без ответа, поскольку я не могу получить отладочную информацию.

У меня есть скрипты, запускающие другие скрипты, и мне нужно увидеть, как tty отключается от терминала.

Есть ли способ глобально задать '-x'? Я не могу задать его в проблемном скрипте, потому что он генерируется динамически, а не мной, но я хотел бы посмотреть, что с ним не так.

решение1

Вызовите Bash с установленными параметрами оболочки

СогласноВызов Bashраздел руководства Bash,

Все односимвольные параметры, используемые со встроенной командой set (см. Встроенная команда Set), могут использоваться как параметры при вызове оболочки.

Это означает, что вы можете запустить скрипт Bash с xtraceустановленной опцией, напрямую вызвав его bashс -xопцией и именем файла скрипта в качестве аргумента, например,

bash -x /path/to/script

Настроить опцию оболочки для всех скриптов оболочки

Когда вы говорите «глобальный», я предполагаю, что вы хотите установить xtraceопцию для всех неинтерактивных вызовов Bash. Чтобы сделать это, установите BASH_ENVпеременную окружения на подходящее имя файла, а затем создайте этот файл с set -xсодержимым:

export BASH_ENV=~/.bash_env
echo set -x > ~/.bash_env

Из страницы руководства:

Когда bash запускается в неинтерактивном режиме, например, для запуска скрипта оболочки, он ищет переменную BASH_ENVв среде, расширяет ее значение, если оно там встречается, и использует расширенное значение в качестве имени файла для чтения и выполнения.

Связанный контент