it-swarm.com.de

Wie setze ich den Befehl at Shell auf bash?

Wie ändere ich die at-Kommando-Shell von sh auf bash?

Beim Ausführen von at erhalte ich die Meldung warning: commands will be executed using /bin/sh:

at 23:33                                                              
warning: commands will be executed using /bin/sh

Wie kann ich die Standard-Shell auf /bin/bash anstelle von /bin/sh einstellen?

5
user123456

Wenn Sie sich man at ansehen, können Sie die Shell anscheinend nicht ändern.

Sie können Ihre Befehle jedoch einfach in einer Bash-Shell in der SH-Shell von at wie folgt starten:

at 01:23 <<< "bash -c 'notify-send \"running from $Shell\"'"
4
Byte Commander

Sie können die Standard Shell von at nicht ändern, sie ist in der Quelle als /bin/sh fest codiert.

Der Quellcode von at verdeutlicht dies aus at.c:

    /* POSIX.2 allows the Shell specified by the user's Shell environment                                                           
       variable, the login Shell from the user's password database entry,                                                                
       or /bin/sh to be the command interpreter that processes the at-job.                                                               
       It also alows a warning diagnostic to be printed.  Because of the                                                                
       possible variance, we always output the diagnostic. */

    fprintf(stderr, "warning: commands will be executed using /bin/sh\n");

Implementierung von atd.c:

if (execle("/bin/sh", "sh", (char *) NULL, nenvp) != 0)

Die Manpage entspricht dementsprechend:

at- und Batch-Lesebefehle von der Standardeingabe oder einer angegebenen Datei, die zu einem späteren Zeitpunkt ausgeführt werden sollen, mit / bin/sh.

So können Sie als einzige Lösung, die Ihren Anforderungen entspricht, Ihre eigene Kopie neu kompilieren.

6
heemayl