Я все еще борюсь с ошибкой изДругой вопроскоторый остался без ответа, поскольку я не могу получить отладочную информацию.
У меня есть скрипты, запускающие другие скрипты, и мне нужно увидеть, как 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
в среде, расширяет ее значение, если оно там встречается, и использует расширенное значение в качестве имени файла для чтения и выполнения.