Почему команда echo не работает с командой?

14

когда я печатаю:

at now + 1 min
at>play /usr/share/sounds/startrek.wav
at>ctrl+d

это работает, так что через минуту звучит звук.

но когда я печатаю:

at now + 1 min
at>echo "Teresa the green vegetable lover"
at>ctrl+d

Я не получил ответ об ошибке из оболочки, но через 1 минуту текст также не отображается.

Абдул Аль Хазред
источник

Ответы:

23

Команды, запускаемые командой at, не выполняются в терминале, где они были зарегистрированы. В общем случае это не имеет смысла: терминал может больше не существовать или может использоваться другим пользователем. Возможно, вы даже вышли из системы к моменту запуска команды.

Вывод команды at отправляется вам по электронной почте. Это локальная электронная почта Unix, а не какая-либо внешняя учетная запись POP или IMAP, которую вы, возможно, создали в какой-либо почтовой программе. Если локальная электронная почта не настроена, выходные данные команды будут потеряны. Если ваш местный адрес электронной почты не настроен, это руководство может вам помочь.

Если вы хотите, чтобы команда at взаимодействовала с вашим терминалом, вам нужно использовать явное перенаправление. Например:

echo "echo hello >$TTY" | at now + 1 min

Обратите внимание, что в этом фрагменте переменная TTYраскрывается оболочкой, поэтому входные данные для atчего-то похожи echo hello >/dev/pts/42.

Жиль "ТАК - перестань быть злым"
источник