«Надежный» метод терпит неудачу, потому что «эта оболочка» — это оболочка, в которой выполняется сценарий, которая не является интерактивной, а не оболочка, из которой вы запустили сценарий.
Проверка того, является ли стандартный ввод терминалом ([[ -t 0 ]]
), несколько более надежна, но она по-прежнему не определяет, запущен ли скрипт изcron
:есть способы запустить скрипт таким образом, чтобы [[ -t 0 ]]
завершился успешно, даже если он не запускается из терминала.
Принятый ответ на Проверить, запускается ли скрипт с помощью cron, а не вручную , кажется мне более надежным.
sudo sed -i.bak 's|create cifs.spnego \* \* /usr/sbin/cifs.upcall %k|create cifs.spnego \* \* /usr/sbin/cifs.upcall -t %k|g' /etc/request-key.d/cifs.spnego.conf
Кажется, у меня получилось