Доброе утро, мастера консоли! ☕️
Каждый в начале пути сталкивается с ошибкой:
script.sh: command not found
Вроде скрипт есть, права +x есть… а запустить нельзя.
В чём подвох?
💡 Всё просто: оболочка ищет команды только в каталогах, прописанных в
$PATH. Текущая директория (
.) туда по умолчанию не входит — из соображений безопасности!Чтобы запустить скрипт из текущей папки, нужно указать явно:
./script.sh
Тем самым ты говоришь системе: "Запусти ЭТОТ конкретный файл, а не ищи его где-то в системных каталогах".
✅ Почему это важно для безопасности:
Представь, ты работаешь под рутом и влетаешь в папку пользователя. А там злой скрипт с именем
ls. Без ./ ты бы случайно его запустил вместо нормального ls. Результат: потеря контроля над сервером.✔️ Для надёжной работы cron-джобов или скриптов в автоматизации всегда указывай полные пути:
/bin/bash /home/user/script.sh
Или определяй команды явно:
CAT=$(which cat)
$CAT script.sh
И помни — добавлять
. в $PATH крайне не рекомендуется! Это открывает брешь для атак.📩 Завтра: Вопрос №35 из теста Linux Essentials Certification
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Управление процессами: Конвейер (pipeline)
🧠 - Управление процессами: Создание и выполнение скриптов командной строки
🧠 - Установка Docker
#Linux_Mastery #bash #linux #security