Warum funktioniert der Befehl echo nicht mit at command?

14

wenn ich tippe:

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

es funktioniert also nach einer minute wird tatsächlich ein ton abgespielt.

aber wenn ich tippe:

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

Ich habe keine Fehlerantwort von der Shell erhalten, aber nach 1 Minute wird auch kein Text angezeigt.

Abdul Al Hazred
quelle

Antworten:

23

Befehle, die von um ausgeführt werden, werden nicht in dem Terminal ausgeführt, in dem sie registriert wurden. Dies wäre im Allgemeinen nicht sinnvoll: Das Terminal ist möglicherweise nicht mehr vorhanden oder wird von einem anderen Benutzer verwendet. Möglicherweise haben Sie sich zum Zeitpunkt der Ausführung des Befehls bereits abgemeldet.

Die Ausgabe eines at-Befehls wird per E-Mail an Sie gesendet. Dies ist eine lokale Unix-E-Mail, unabhängig davon, welches externe POP- oder IMAP-Konto Sie in einem E-Mail-Programm eingerichtet haben. Wenn Ihre lokale E-Mail nicht eingerichtet ist, geht die Ausgabe des Befehls verloren. Wenn Ihre lokale E-Mail-Adresse nicht eingerichtet ist, hilft Ihnen dieses Handbuch möglicherweise.

Wenn ein at-Befehl mit Ihrem Terminal interagieren soll, müssen Sie eine explizite Umleitung verwenden. Beispielsweise:

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

Beachten Sie, dass in diesem Snippet die Variable TTYdurch die Shell erweitert wird, sodass die Eingabe für atso etwas wie lautet echo hello >/dev/pts/42.

Gilles 'SO - hör auf böse zu sein'
quelle