Perché il comando echo non funziona con il comando at?


14

quando scrivo:

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

funziona, quindi dopo un minuto viene effettivamente riprodotto un suono.

ma quando scrivo:

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

Non ho ricevuto risposta di errore dalla shell, ma dopo 1 minuto non viene più visualizzato alcun testo.

Risposte:


23

I comandi eseguiti da non vengono eseguiti nel terminale in cui sono stati registrati. Questo non avrebbe senso in generale: il terminale potrebbe non esistere più o potrebbe essere utilizzato da un altro utente. Potresti anche esserti disconnesso al momento dell'esecuzione del comando.

L'output di un comando at viene inviato tramite e-mail. Questa è la posta elettronica Unix locale, non un account POP o IMAP esterno che potresti aver impostato in qualche programma di posta elettronica. Se l'e-mail locale non è impostata, l'output del comando viene perso. Se l'e-mail locale non è impostata, questa guida può esserti utile.

Se si desidera che un comando at interagisca con il proprio terminale, è necessario utilizzare un reindirizzamento esplicito. Per esempio:

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

Nota che in questo frammento, la variabile TTYviene espansa dalla shell, quindi l'input atè qualcosa di simile echo hello >/dev/pts/42.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.