💥 Почему
Привет, терминальный заклинатель! Кажется, ты добавил
🤔 Что вообще делает
> "Если любая команда завершится ошибкой, — останови скрипт немедленно".
Это полезно для CI/CD, бэкапов и всего, что не прощает ошибок. Но...
⚠️ Проблема: поведение
Вот типичный случай:
Скрипт завершится после
Но теперь внимание:
🎉 Здесь
🔍 Когда
Если ты используешь команды вроде:
Скрипт продолжит работу, даже если
✅ Как правильно использовать
1. Сначала — пойми, где оно действительно нужно (например, в CI/CD, деплое, тестах).
2. Используй его в отдельных функциях, а не во всём скрипте сразу.
3. Если обрабатываешь ошибку вручную — используй
👨💻 Итог:
🌳 Ветка: https://stackoverflow.com/questions/19622198/what-does-set-e-mean-in-a-bash-script
📩 Завтра: BTRFS: Продвинутые техники для настоящих гуру!
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 -Настрой мониторинг сети в реальном времени с Prometheus и Grafana
🧠 - b2-tools — простое и быстрое резервное копирование в облако
🧠 - Ты не знал, что cat умеет это! Лайфхаки для работы с файлами в Linux
#stackoverflow @LinuxSkill #bash #linux #скрипты #автоматизация #devops #linuxskill #сетевые_лайфхаки #shell #ci_cd #ошибки
set -e в bash может сломать тебе всё!Привет, терминальный заклинатель! Кажется, ты добавил
set -e в свой bash-скрипт и думал, что теперь ошибки сами себя поймают? А потом скрипт резко перестал доходить до конца?.. Давай разберемся, в чём подвох.🤔 Что вообще делает
set -e?set -e говорит интерпретатору bash: > "Если любая команда завершится ошибкой, — останови скрипт немедленно".
Это полезно для CI/CD, бэкапов и всего, что не прощает ошибок. Но...
⚠️ Проблема: поведение
set -e — неочевидно!Вот типичный случай:
#!/bin/bash
set -e
false
echo "Я не выполнюсь!"
Скрипт завершится после
false, и echo даже не запустится. Всё логично. Но теперь внимание:
#!/bin/bash
set -e
if false; then
echo "Упс"
fi
echo "А вот и я!"
🎉 Здесь
echo выполнится! Потому что ошибки внутри if, while, until и &&/|| — игнорируются!🔍 Когда
set -e может навредить?Если ты используешь команды вроде:
grep "что-то" файл.txt || echo "не найдено"
Скрипт продолжит работу, даже если
grep вернёт ненулевой код. Но теперь представь, что ты этого не знал… 😬✅ Как правильно использовать
set -e?1. Сначала — пойми, где оно действительно нужно (например, в CI/CD, деплое, тестах).
2. Используй его в отдельных функциях, а не во всём скрипте сразу.
3. Если обрабатываешь ошибку вручную — используй
||, if, trap, set +e.👨💻 Итог:
set -e — не волшебная палочка. Это строгий сторож, который иногда рубит по-живому. Используй с умом, тестируй поведение и знай, где он тебя может подставить.🌳 Ветка: https://stackoverflow.com/questions/19622198/what-does-set-e-mean-in-a-bash-script
📩 Завтра: BTRFS: Продвинутые техники для настоящих гуру!
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 -Настрой мониторинг сети в реальном времени с Prometheus и Grafana
🧠 - b2-tools — простое и быстрое резервное копирование в облако
🧠 - Ты не знал, что cat умеет это! Лайфхаки для работы с файлами в Linux
#stackoverflow @LinuxSkill #bash #linux #скрипты #автоматизация #devops #linuxskill #сетевые_лайфхаки #shell #ci_cd #ошибки
Stack Overflow
What does 'set -e' mean in a Bash script?
I'm studying the content of this preinst file that the script executes before that package is unpacked from its Debian archive (.deb) file.
The script has the following code:
#!/bin/bash
set -e
#
The script has the following code:
#!/bin/bash
set -e
#
👍18👀1
🚨 Можешь ли ты использовать
👋 Привет, мастер терминала! Иногда нужно понять: можешь ли ты выполнять команды через
⚡ Базовая проверка:
-
- Команда мгновенно завершится с ошибкой, если пароль требуется.
🛡️ Проверка без влияния кэшированных сессий:
-
🔍 Защита от частных NOPASSWD правил:
- Проверяем реальное право на запуск любой команды без пароля.
🌐 Источник: https://unix.stackexchange.com/questions/777552/check-if-current-user-can-run-sudo-without-requiring-a-password
📩 Завтра: Что будет, если ввести неправильный пароль в sudo? (спойлер: тебя унизят)
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Производительность Nginx vs Apache: кто победит?
🧠 - Как измерить время выполнения программы в Linux?
🧠 - Осторожно: Как не стать жертвой сниффинга паролей на Linux!
#stackoverflow @LinuxSkill #linux #bash #sudo #shell #security
sudo без пароля? Проверь за 5 секунд!👋 Привет, мастер терминала! Иногда нужно понять: можешь ли ты выполнять команды через
sudo без запроса пароля? Особенно важно для скриптов и автоматизации.⚡ Базовая проверка:
sudo -n true 2>/dev/null || exit 1
-
-n запрещает запрос пароля.- Команда мгновенно завершится с ошибкой, если пароль требуется.
🛡️ Проверка без влияния кэшированных сессий:
sudo -k
sudo -n true 2>/dev/null || exit 1
-
sudo -k очищает кэш пароля.🔍 Защита от частных NOPASSWD правил:
rand=$(mktemp /tmp/true.XXXXX)
cp /usr/bin/true "$rand"
sudo -n "$rand" 2>/dev/null && echo "Есть доступ" || echo "Нет доступа"
rm "$rand"
- Проверяем реальное право на запуск любой команды без пароля.
🌐 Источник: https://unix.stackexchange.com/questions/777552/check-if-current-user-can-run-sudo-without-requiring-a-password
📩 Завтра: Что будет, если ввести неправильный пароль в sudo? (спойлер: тебя унизят)
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Производительность Nginx vs Apache: кто победит?
🧠 - Как измерить время выполнения программы в Linux?
🧠 - Осторожно: Как не стать жертвой сниффинга паролей на Linux!
#stackoverflow @LinuxSkill #linux #bash #sudo #shell #security
Unix & Linux Stack Exchange
Check if current user can run sudo without requiring a password
I want to check if the current user running a BASH shell script has access to passwordless sudo or not. If they don't, I'd rather have the script exit rather than prompting them for a password.
👍12