TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #521 897
Отладка bash-скриптов

В bash есть встроенная трассировка, и она может быть эффективнее любого printf-дебага.

1️⃣ Включаем трассировку


set -x


Теперь каждая команда будет выводиться перед выполнением:


+ var=10
+ echo 10


Отключить:


set +x


Полезно включать только на проблемном участке.

2️⃣ Отладка всего скрипта. Можно запустить сразу так:


bash -x script.sh


Или добавить в начало:


#!/bin/bash
set -x


3️⃣ Сделать трассировку читаемой. По умолчанию вывод начинается с +. Это скучно. Можно добавить больше контекста:


export PS4='+ $(date "+%H:%M:%S") ${BASH_SOURCE}:${LINENO}: '


Теперь вывод будет выглядеть так:


+ 14:32:10 script.sh:12: var=10


Здесь видно: время, файл и номер строки Для сложных скриптов - это крайне полезно.

4️⃣ Отдельный лог отладки. Чтобы не засорять stdout:


exec 3>/tmp/debug.log
BASH_XTRACEFD=3
set -x


Теперь трассировка уйдет в /tmp/debug.log, а основной вывод останется чистым. Это особенно важно для автоматизации и CI.

5️⃣ Отладка переменных. Полезные режимы:


set -u # ошибка при использовании unset переменной
set -e # выход при ошибке
set -o pipefail # ловим ошибки в пайпах


Продвинутый вариант:


set -euxo pipefail


BashTex 📱 #bash #utils
  • 👍 6
  • 🔥 3
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →