О действительной причине вы должны спросить автора (ов). Я могу только сказать вам, что это очень хорошая практика:
Из статьи в Википедии о железнодорожном пневматическом тормозе :
Система Westinghouse использует давление воздуха для зарядки резервуаров (баков) воздуха на каждой машине. Полное давление воздуха дает сигнал каждой машине отпустить тормоза. Снижение или потеря давления воздуха дает сигнал каждой машине задействовать тормоза, используя сжатый воздух в своих резервуарах.
Это означает, что по умолчанию тормоз включен. Вам нужно усилие, чтобы освободить его и привести поезд в потенциально опасное состояние.
Конечно, это не объясняет, почему существуют два режима rm
(рекурсивный и нерекурсивный). Может быть, это то, о чем вы спрашиваете. Тем не менее, сделать более безопасный вариант по умолчанию было правильным решением.
1. Сначала :используйте #!/bin/bash
вместо#!/BIN/BASH
С помощью #!/BIN/BASH
, если вы запускаете такой скрипт:
bash script.sh
..все работает нормально.
Но если выполнить:
./script.sh
..вы получаете ошибку:
-bash:./script.sh: /BIN/BASH: bad interpreter: No such file or directory
2. Выполните эту команду:
echo 'PATH='$PATH
добавить вывод в начало скрипта.
Пример:
# echo 'PATH='$PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Основная проблема с подобными задачами cron заключается в том, что вы не можете легко их отлаживать.
Как правило, задачи cron должны работать молча , если нет ошибок , но они должны быть очень подробными в случае любой ошибки.
Расширяя ответ Егора Васильева, вы можете легко включить «режим отладки» в скрипте bash с помощью
#!/bin/bash -x
exec 2>>/var/log/cron.log
команды. Первый интерпретирует ваш скрипт по флагу -x
, что означает, что вы получите всю выполненную команду в файле stderr.
А exec 2>>/var/log/cron.log
— это команда, которая ничего не выполняет , а перенаправляет стандартную ошибку в файл журнала в режиме добавления. По сути, интерпретатор оболочки "re -выполняет" себя с заданными перенаправлениями, даже без изменения контекста выполнения скрипта .