¿Por qué el comando echo no funciona con el comando at?

14

cuando escribo:

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

funciona, así que después de un minuto en realidad se reproduce un sonido.

pero cuando escribo:

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

No recibí respuesta de error del shell, pero después de 1 minuto tampoco aparece ningún texto.

Abdul Al Hazred
fuente

Respuestas:

23

Los comandos ejecutados por at no se ejecutan en el terminal donde se registraron. Esto no tendría sentido en general: el terminal podría no existir más, o podría estar en uso por un usuario diferente. Puede que incluso haya cerrado la sesión cuando se ejecute el comando.

La salida de un comando at se le envía por correo electrónico. Ese es el correo electrónico local de Unix, no cualquier cuenta POP o IMAP externa que haya configurado en algún programa de correo electrónico. Si su correo electrónico local no está configurado, se pierde la salida del comando. Si su correo electrónico local no está configurado, esta guía puede ayudarlo.

Si desea que un comando at interactúe con su terminal, debe usar una redirección explícita. Por ejemplo:

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

Tenga en cuenta que en este fragmento, la variable TTYse expande por el shell, por lo que la entrada a ates algo así echo hello >/dev/pts/42.

Gilles 'SO- deja de ser malvado'
fuente