Pourquoi la commande echo ne fonctionne-t-elle pas avec la commande at?

14

quand je tape:

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

cela fonctionne, donc après une minute il y a en fait un son joué.

mais quand je tape:

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

Je n'ai reçu aucune réponse d'erreur du shell, mais après 1 minute, aucun texte ne s'affiche également.

Abdul Al Hazred
la source

Réponses:

23

Les commandes exécutées par at ne s'exécutent pas dans le terminal où elles ont été enregistrées. Cela n'aurait aucun sens en général: le terminal pourrait ne plus exister, ou il pourrait être utilisé par un autre utilisateur. Vous pouvez même vous être déconnecté au moment de l'exécution de la commande.

La sortie d'une commande at vous est envoyée par e-mail. Il s'agit de la messagerie Unix locale, et non du compte POP ou IMAP externe que vous avez configuré dans un programme de messagerie. Si votre e-mail local n'est pas configuré, la sortie de la commande est perdue. Si votre e-mail local n'est pas configuré, ce guide peut vous aider.

Si vous souhaitez qu'une commande at interagisse avec votre terminal, vous devez utiliser une redirection explicite. Par exemple:

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

Notez que dans cet extrait, la variable TTYest développée par le shell, donc l'entrée à atest quelque chose comme echo hello >/dev/pts/42.

Gilles 'SO- arrête d'être méchant'
la source