В те времена, когда мне нужно было это делать, я знаю, что это скрипт, который я никогда не перенаправлю в файл или канал. Таким образом, простой тест состоит в том, чтобы проверить, является ли stdout (он же дескриптор файла 1) tty (чего не будет от cron). В Баш:
if [ -t 1 ]
then
: # running from terminal
else
: # not running from terminal, cron maybe
fi
Опять же, предупреждение, это тест, просто если ваш стандартный вывод tty. Но работает для моих простых целей.
Вы также можете проверить, каков ваш родительский процесс. В Linux это может быть так просто, как:
if grep -q cron /proc/$PPID/cmdline &> /dev/null
then
: # running from cron
fi